2014-02-28 77 views
1

我有一個有7個條目的圖例,其中一些在一個子圖上,一些在另一個上,另一些對兩個圖都是常見的。我已經設法使用我在網上找到的一些幫助,將所有這些條目合併到一個圖例中,這非常棒。Matlab多列圖例和子圖

我現在唯一的問題是,每個條目的字符串都很長,所以我理想的是需要它們在第2列中,第7個條目位於圖例底部的中間位置。我發現的各種選項做多圓柱傳說:

但我不知道如何將它們與我的方式組合已經制定了如何做傳說。

這是我到目前爲止MWE:

xdata=1:1:10; 
ydata=0:0.1:0.9; 
% Line colours 
cm=[32 114 214;145 205 237;0 129 63;247 217 9;255 127 0;184 18 21]; 
cm=cm/255; 
h1=subplot(2,1,1); 
l1=line(xdata,ydata,'Color',cm(1,:)); 
l2=line(xdata,ydata,'Color',cm(2,:)); 
l3=line(xdata,ydata,'Color',cm(3,:)); 
l5=line(xdata,ydata,'Color',cm(5,:)); 
l7=line(xdata,ydata,'Color','k','LineStyle','--'); 
h2=subplot(2,1,2); 
l4=line(xdata,ydata,'Color',cm(4,:)); 
l6=line(xdata,ydata,'Color',cm(6,:)); 
line(xdata,ydata,'Color','k','LineStyle','--'); 
hL=legend(h2,[l1,l2,l3,l4,l5,l6,l7],{'Second/Multi-year La Niña','First/Single-year La Niña','Neutral ENSO years','First/Single-year El Niño','El Niño years','Second/Multi-year El Niño','All Years (1901-2011)'},'Location','SouthOutside','Orientation','horizontal'); 
set(hL,'Units','centimeters'); 
Lpos=get(hL,'Position'); 
Lpos(1)=0; 
Lpos(2)=0; 
set(hL,'Position',Lpos); 

我的實際數據不重疊,所以你可以看到所有的線。舉例來說,這樣做更容易。

任何人都可以幫我解決傳奇所需的佈局嗎?很可能我可以使用我已經找到的3個選項中的一個,但我並不真正瞭解他們做得足夠好以適用於我的情況。

+0

您可以將'方向'圖例選項設置爲'垂直'嗎? – Brian

+0

我可以做,但是我得到了一個很長的垂直傳說,上面有7條線。我想擁有像我描述的傳奇,所以它不佔用太多的空間,因爲這個數字正在進入期刊文章。 – emmalgale

回答

1

我發現了另一種解決方法,即創建3個獨立的圖例,然後將它們放在我想要的位置。我做了它具有'Visible','off'設置一個第三次要情節,並使用下面的代碼調用我的三個傳說:

lg1=legend(h1,[l1,l2,l3],{'a','b','c'}); 
lg2=legend(h2,[l4,l5,l6],{'d','e','f'}); 
lg3=legend(h3,l7,{'g'}); 

其中H1-3是次要情節,L1-7是7行,和-G是傳說中的文本。然後使用get(lg1,'Position')重新排列它們,改變位置向量,並使用set(lg1,'Position',...)(用位置向量替換...)重置它們。我圍繞着三個傳說關閉了盒子,但是打算在盒子周圍放一個盒子,看起來就像是一個傳奇。

不是最好的方法來做到這一點,但它適用於我需要做的事情。