Matlab中显示字体颜色

4
我正在尝试创建一个数字数组(转换为字符串),这些数字低于阈值,在我的当前测试中,我使用的是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) 

最好能够发布一个完整的代码示例,以便我们可以复制并粘贴以尝试它。在您的代码中,“TTT”未定义。 - A. Donda
1
TTT是由Matlab生成的随机数组,大小为(30 x 2)。我可能在复制粘贴变量PPP时犯了一个错误,但一切都正常工作。现在已经编辑了代码。 - barracuda
+1 表示可以直接运行的代码。 - Luis Mendo
我一定错过了那第一行。 - A. Donda
1个回答

3

您没有填写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) 

非常感谢!这真正解决了我问题的前半部分,我还需要将第一列所有值的字体颜色也变为红色,如果它们大于0.50。 - barracuda
@Stephan 抱歉。初始化必须在 for 循环之前完成。请查看更新的答案。 - Luis Mendo
哇,非常感谢Luis,它完美地解决了问题。我从未注意到那些错误,再次感谢,我花了很多时间来解决这个问题。 - barracuda
@Stephan 很高兴能帮到你。你可能知道,如果它解决了你的问题,你应该考虑给它点赞和/或将答案标记为已接受的答案 :-) - Luis Mendo
2
这个问答教会了我一些新东西(处理表格数据中的HTML),我会帮忙点赞,因为 Stephan 做不到。 ;) - chappjc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接