2013-02-04 4 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 및 웹에서 찾은 해결책을 시도했지만 해결할 수 없었습니다. 대신 전설의

답변

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

그래서, ONL Y의 방법은 정말 legend를 사용하여 here을 설명하는 것과 유사한, 각각 따로 각 bar을 음모라고 할 수 있습니다. 당신이 변위를 방지하려면 즐의 대답 또한

+0

그러나이 텍스트는 x 축에 표시됩니다. 문제는 거기에 다른 텍스트를 배치해야한다는 것입니다. 편집하다. 벡터 데이터에서 범례를 사용할 수 없다는 뜻입니까? – Makaroni

+1

내 편집 된 답변을 참조하십시오. 기본적으로 bar()를 행 또는 열 벡터와 함께 사용하면 범례를 사용하여 원하는 것을 수행 할 수 없습니다. 범례 처리 방법의 내부는 MATLAB 문서에 설명되어 있습니다. – bla

+0

확인해 주셔서 감사합니다. – Makaroni

1

, 당신은

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

를 사용할 수 있습니다.

관련 문제