【问题标题】:Displaying Font Colors in Matlab在 Matlab 中显示字体颜色
【发布时间】:2013-12-13 22:54:38
【问题描述】:

我正在尝试创建一个低于阈值的数字数组(转换为字符串),对于我当前的测试,我使用的是 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 未定义。
  • TTT是matlab生成的随机数组,(30 x 2)。我可能在复制粘贴变量 PPP 时出错了,但一切正常。现在编辑代码。
  • +1 直接运行代码
  • 我一定错过了第一行。

标签: arrays matlab matrix fonts matlab-uitable


【解决方案1】:

您没有填写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,我还需要将第 1 列中所有值的字体也涂成红色。
  • @Stephan 对不起。初始化必须在for 循环之前完成。查看更新的答案
  • 哇,感谢分配 Luis,它运行良好。我从来没有注意到这些错误,再次感谢,我花了很多时间来解决这个问题。
  • @Stephan 很高兴我能帮上忙。您可能知道,如果它解决了您的问题,您应该考虑投票和/或将答案标记为已接受:-)
  • 这个 QA 教会了我一些新的东西(处理表格数据中的 html),我会处理 Stephan 不能的赞成票。 ;)
猜你喜欢
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
相关资源
最近更新 更多