在MATLAB图中将文本对象添加到图例中

时间:2014-11-14 18:43:42

标签: matlab text plot legend

我想在图例中添加一些文字,关于我在图中添加的文本(即t1变量)。

这是一个简单的情节示例:

xa = [1 1 1 1 2 2 2 2 3 3 3 3 5 5 5 5];
ya = rand(1,16);
plot(xa, ya,'o', [0 5], [0.5 0.5],'k--')
L = legend('values', 'average');
for ii = 1:numel(xa)
    t1=text(xa(ii)+0.02, ya(ii), ['A_{' num2str(ii) '}'], ...
            'HorizontalAlignment','left', ...
            'VerticalAlignment','middle', ...
            'FontSize', 8);
end

所以,我想在传说中有第三行,例如," A1 - A16"。我阅读了有关text的文档,并尝试使用DisplayName属性,但我无法使其正常运行。

2 个答案:

答案 0 :(得分:1)

这是一种可能解决您问题的黑客行为。这不是优雅的,但诀窍是绘制一条白色的虚拟曲线,它不会出现在情节上,但你仍然可以指定一个图例。例如,在绘图调用中添加[0 0],[0 0],'w-',在图例条目中添加'A1-A16',结果如下图所示:

enter image description here

整个代码:

clear
clc

xa = [1 1 1 1 2 2 2 2 3 3 3 3 5 5 5 5];

ya = rand(1,16);

plot(xa, ya,'o', [0 5], [0.5 0.5],'k--',[0 0],[0 0],'w-')
L = legend('values', 'average', 'A1-A16');
for ii = 1:numel(xa)
    t1=text(xa(ii)+0.02, ya(ii), ['A_{' num2str(ii) '}'], ...
            'HorizontalAlignment','left', ...
            'VerticalAlignment','middle', ...
            'FontSize', 8);
end

哈哈看起来不错。当然,如果你改变轴的背景颜色,你需要改变虚线/图的颜色,但它应该工作。 希望有所帮助!

答案 1 :(得分:0)

您可以通过获取最后一个单元格,修改单元格并将其重新设置,将新字符串附加到图例中:

leghandle = findall(gcf, 'tag', 'legend'); 
legstr = get(leg,'String'); % or just get L
% ensure legstr is a cell, not a string
if ischar(legstr)
    legstr = mat2cell(legstr); 
end
legstr(end+1) = {'A1-A16'};