2013-02-04 107 views
3

如何在Matlab中繪製條形圖中的圖例?下面是代碼:Matlab中條形圖中的圖例

Y = [1.5056 
0.72983 
3.4530 
3.2900 
1.4839 
12.9 ]; 
n = length(Y); 
h = bar(Y); 
colormap(summer(n)); 
grid on 

l = cell(1,6); 
l{1}='L'; l{2}='B'; l{3}='R'; l{4}='P'; l{5}='h'; l{6}='Ri';  
legend(h,l); 

這給出一個錯誤:警告:忽視額外的圖例項。我試過我在SO和web上找到的解決方案,但是我無法解決這個問題。

回答

14

取而代之的傳說,你可以用刻度標記,例如解決它:

set(gca,'xticklabel', l) 

enter image description here

這將標記每個酒吧。如果你想使用legend你需要有一個矩陣數據,所以條形圖將顯示每個條目幾個條。例如

Y=rand(10,6) 
h = bar(Y); 
colormap(summer(n)); 
grid on 
l = cell(1,6); 
l{1}='L'; l{2}='B'; l{3}='R'; l{4}='P'; l{5}='h'; l{6}='Ri';  
legend(h,l); 

enter image description here

或者,您可以以這種方式使用不同bar()電話:

h = bar(diag(Y)); 

但後來你會得到每各條位移:

enter image description here

因此,實際上使用legend的方法是分開繪製每個bar,類似於討論的here

+0

但是,這給了我這個x軸的文字。問題是我必須在那裏放置其他文本。編輯。你的意思是我不能在矢量數據上使用圖例? – Makaroni

+1

看到我編輯的答案,基本上你不能做你想要使用圖例,當你使用bar()行或列向量。 MATLAB文檔描述瞭如何處理傳說的內部結構。 – bla

+0

好的,謝謝你的回答! – Makaroni

1

繼BLA的回答,您可以使用

h = bar(diag(Y),'stacked'); 

,如果你想避免的位移。