我正在尝试在图例中为代码文本添加颜色。 (因为我试图将几个图表分成不同的类别,我不能仅仅依赖图例中的线条颜色。)我已经设法为整个图例设置文本颜色,但我无法设法逐行分配。这可能吗?
到目前为止代码:
list={'Label 1','Label 2','Label 3'};
leg=legend(list);
set(leg,'Textcolor',[1 0 0])
将整个图例的文本颜色设置为红色。我希望能够制作一些红色和一些黑色。我尝试将颜色数组指定为n x 3矩阵,但MATLAB并不那么喜欢。我还使用get(leg)
探索了图例属性,但我找不到其他任何看似有用的东西。有什么建议吗?
答案 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
函数的方式相反。以上将给出以下情节: