我正在尝试创建一个低于阈值的数字数组(转换为字符串),对于我当前的测试,我使用的是 0.5。我需要我的表中高于或低于我的阈值的每个值的字体都被涂成红色,在我当前的代码中我只使用 2 列,但我将使用超过 10 列。这是我现在的代码它只以红色显示 0.5 以上的数字值,但不显示 0.5 以下的数字(它们应该是黑色的)。 对于变量的错误命名,我深表歉意,我只是在测试实现这个。将不胜感激。
TTT = rand(30,2);
for u = 1:2
PPP = TTT(1:30, u:u);
RRR = ( PPP(:) > .5);
AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));
QQQQ(RRR, u) = strcat(...
'<html><span style="color: #FF0000; font-weight: bold;">', ...
AAA(RRR, u), ...
'</span></html>');
end
%# 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',QQQQ)
最佳答案
您没有在 QQQQ
中填写所有值,只有那些将显示为红色的值。其余的(应该是黑色的)保留为空单元格,因此不会显示。
要更正此问题,您需要将QQQQ
初始化为AAA
,然后然后 修改相关单元格的颜色。所以,添加
AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));
QQQQ = AAA;
在 for
循环之前,从循环中删除 AAA = reshape...
行。即:
TTT = rand(30,2);
AAA = reshape(strtrim(cellstr(num2str(TTT(:)))), size(TTT));
QQQQ = AAA;
for u = 1:2
PPP = TTT(1:30, u:u);
RRR = ( PPP(:) > .5);
QQQQ(RRR, u) = strcat(...
'<html><span style="color: #FF0000; font-weight: bold;">', ...
AAA(RRR, u), ...
'</span></html>');
end
%# 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',QQQQ)
关于arrays - 在 Matlab 中显示字体颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20577391/