2014-11-14 91 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