MATLAB:为图例中的文本指定多种颜色

Dor*_*oom 9 matlab plot legend textcolor legend-properties

我正在尝试在图例中为代码文本着色.(因为我试图将几个图表分成不同的类别,我不能仅仅依赖图例中的线条颜色.)我已经设法为整个图例设置文本颜色,但我无法设法逐行分配.这可能吗?

代码到目前为止:

list={'Label 1','Label 2','Label 3'};
leg=legend(list);
set(leg,'Textcolor',[1 0 0])
Run Code Online (Sandbox Code Playgroud)

整个图例的文本颜色设置为红色.我希望能够制作一些红色和一些黑色.我尝试将颜色数组指定为nx 3矩阵,但MATLAB并不那么喜欢.我也使用了传奇属性get(leg),但我找不到其他任何看似有用的东西.有什么建议?

Yai*_*man 12

虽然yuk和gnovice的答案是正确的,但我想指出一个鲜为人知但又完全记录的事实,即图例函数返回对应于图例组件的附加句柄.从图例功能的文档:

[legend_h,object_h,plot_h,text_strings] = legend(...)返回

  • legend_h - 图例轴的句柄
  • object_h - 图例中使用的线,补丁和文本图形对象的句柄
  • plot_h - 绘图中使用的线条和其他对象的句柄
  • text_strings - 图例中使用的文本字符串的单元格数组

这些句柄使您可以修改相应对象的属性.


yuk*_*yuk 9

这是代码:

legtxt=findobj(leg,'type','text');
set(legtxt(1),'color','k')
Run Code Online (Sandbox Code Playgroud)

只需找出哪个图例对应哪个索引.


gno*_*ice 8

要单独更改图例文本颜色,必须首先获取文本对象的句柄,文本对象是图例对象的子对象.然后您可以单独更改其文本颜色.这是一个如何做到这一点的例子:

plot(1:10, rand(1, 10), 'r');       % Plot a random line in red
hold on;
plot(1:10, rand(1, 10), 'b');       % Plot a random line in blue
hLegend = legend('a', 'b');         % Create the legend
hKids = get(hLegend, 'Children');   % Get the legend children
hText = hKids(strcmp(get(hKids, 'Type'), 'text'));  % Select the legend children
                                                    %    of type 'text'
set(hText, {'Color'}, {'b'; 'r'});  % Set the colors
Run Code Online (Sandbox Code Playgroud)

请注意,最后一行中的颜色顺序为蓝色,然后是红色,与标签传递给legend函数的方式相反.以上将给出以下情节:

在此输入图像描述