2014-11-14 90 views
1

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

这里的情节简单的例子:

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属性,但我无法使其正常工作。

+0

您想要将“A1-A16”添加到图例L?或者你想把它添加到一个单独的图例? – Alex 2014-11-14 19:41:49

+0

@AlexB我想将它添加到图例'L'。 – 2014-11-14 19:58:00

回答

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 

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

+0

它可以工作,但不是当我将图保存为.png('print(gcf,' - dpng',' - r200','testest.png')时,该解决方案应该可以用于保存的gcf – 2014-11-14 20:36:34

+0

mhh对于我来说,当我在最后添加该行时工作的很好。什么是不正确的? – 2014-11-14 20:43:12

+0

当我看着MATLAB中的图形时,“A1-A16”左侧没有任何东西,但是当我保存图到一个.png,在左边添加一条黑线 – 2014-11-14 20:49:38

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'}; 
+0

我试着在我的代码后执行你的解决方案,用'L'替换'leg'并且它不起作用。该字符串不会添加到剧情图例中。 – 2014-11-14 20:03:17