如何根据表中的数据(在Matlab中)修改合适的单元格颜色?

如何根据表中的数据(在Matlab中)修改合适的单元格颜色?,matlab,user-interface,matlab-uitable,Matlab,User Interface,Matlab Uitable,我有一个matlab函数,它以uitable返回结果 表中有两列和许多行:第一列是“值”,第二列是各种“安全阈值/置信区间” 我想格式化输出,以便某些单元格被涂成红色: 第1列中的“值”超过第2列中相应的“安全阈值”的 有没有一种方法可以只用Matlab来实现这一点 附言: 我知道以下页面: 但对我来说,这似乎是一个很大的修补,我希望自从那篇文章发表以来,也许Matlab已经赶上了潮流,并内置了这个功能?如果你阅读了讨论,你会发现它支持HTML内容 以下是一个例子: X = rand(100,

我有一个matlab函数,它以uitable返回结果

表中有两列和许多行:第一列是“值”,第二列是各种“安全阈值/置信区间”

我想格式化输出,以便某些单元格被涂成红色: 第1列中的“值”超过第2列中相应的“安全阈值”的

有没有一种方法可以只用Matlab来实现这一点

附言: 我知道以下页面:


但对我来说,这似乎是一个很大的修补,我希望自从那篇文章发表以来,也许Matlab已经赶上了潮流,并内置了这个功能?

如果你阅读了讨论,你会发现它支持HTML内容

以下是一个例子:

X = rand(100,2);

%# convert matrix of numbers to cell array of strings (right aligned)
XX = reshape(strtrim(cellstr(num2str(X(:)))), size(X));

%# find cells matching condition
idx = ( X(:,1) > X(:,2) );

%# use HTML to style these cells
XX(idx,1) = strcat(...
    '<html><span style="color: #FF0000; font-weight: bold;">', ...
    XX(idx,1), ...
    '</span></html>');

%# create table
f = figure;
h = uitable('Parent',f, 'Units','normalized', 'Position',[0.05 0.05 0.9 0.9]);

%# set table data
set(h, 'Data',XX)
X=rand(100,2);
%#将数字矩阵转换为字符串单元格数组(右对齐)
XX=重塑(strtrim(cellstr(num2str(X(:)))),大小(X));
%#查找与条件匹配的单元格
idx=(X(:,1)>X(:,2));
%#使用HTML设置这些单元格的样式
XX(idx,1)=strcat(。。。
'', ...
XX(idx,1)。。。
'');
%#创建表
f=数字;
h=uitable('Parent',f',Units','normalized','Position',[0.05 0.05 0.9 0.9]);
%#设置表格数据
集合(h,‘数据’,XX)

不确定您为什么不想使用Yair的代码。我不相信这个功能是天真的,虽然我可能是错的;Yair有一个关于在MATLAB中做一些你不能天真地做的事情的完整博客。这肯定是一种黑客行为,依赖于未记录的功能,但这就是我会使用的代码。Yair Altman最近的博客文章也有这样一篇:事实上,没有必要关闭HTML标签()对于任何感兴趣的人,我在我的网站上发布了一篇关于这个问题的专门(扩展)文章:绝对值得一读,再次感谢Yair。也许您可以在这里发布一个显示“单元渲染器”方法的小示例。你一定会得到我的选票:)阿姆罗-谢谢你的客气话。我确实在2011年用这个链接发布了一个答案,但由于“自我宣传”和“只是点击链接”而被删除。当我被大量冷水浇到头上时,可以说它有点像是从我的帆上吹来的风…@YairAltman:很抱歉你有一次不愉快的经历。你的文章肯定是关于主题的,解决了眼前的问题。但是我想如果你在链接之外还包括了一个摘要,那么堆栈溢出的方式会更令人满意,这样答案是自包含的(如果你仍然想要的话,你可以进行更改并投票取消删除)。。。无论如何,我要说的是,你们在MATLAB社区中的贡献总是受到赞赏的