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

时间:2010-02-03 17:50:08

标签: matlab plot legend textcolor legend-properties

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

到目前为止

代码:

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

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

3 个答案:

答案 0 :(得分:12)

虽然yuk和gnovice的答案是正确的,但我想指出一个鲜为人知但又充分记录的事实,即 图例 函数会返回其他句柄对应于图例组件。来自 图例 功能的文档:

  

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

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

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

答案 1 :(得分:9)

以下是代码:

legtxt=findobj(leg,'type','text');
set(legtxt(1),'color','k')

找出哪些图例与哪个索引相对应。

答案 2 :(得分: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

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

enter image description here