2013-12-12 3 views
1

막대 그래프를 막대 3 개로 만들어야합니다. 세 막대의 값은 x에 저장됩니다. 이제 나는 전설을하기를 원합니다. 각 막대에는 문자로 레이블을 지정해야합니다. '알파벳'.matlab 막대 그래프 : 각 값이 하나씩있는 막대 3 개를 표시합니다.

x = rand(1,3); bar(x); legend('A','B','C'); 

작동하지 않았습니다. 다음 예제를 시도 : http://www.mathworks.com/matlabcentral/fileexchange/35271-matlab-plot-gallery-vertical-bar-plot/content/html/Vertical_Bar_Plot.html

그러나 각 범주의 항목 수를 1로 줄이면 오류 메시지가 표시되지만 메시지가 잘못되었다고 생각합니다./모든 숫자가 아니라 단지 1로만 ...

그래서이 문제에 대한 간단한 해결책이 있습니까?

답변

0

원하는 것은 "3 계열 플롯"입니다. 불행히도 1x3으로 만들면 Matlab은 그것이 하나의 시리즈라고 생각합니다. 우리는 당신이 3 시리즈를 가지고 있다고 생각하도록 속여 야합니다. 여기에 당신이 그것을 할 방법은 다음과 같습니다

x = rand(1,3); 
x2 = [x; x*0]; % add a second row of all zeros 
figure 
bar(x2);   % now we have a plot with an ugly second category 
xlim([0.5 1.5]); % trick that hides second category 
legend('a','b','c'); % add the legend 
set(gca, 'XTickLabel', ''); % hide the '1' on the X axis (or make it whatever you want) 
title 'Bar plot with legend - demo' 

결과는이 같은 것입니다 :

enter image description here

나는 이것이 당신이 요구 한 정확히 무엇을 믿습니다.

+0

대단히 감사합니다! 이것은 정말로 제가 찾고있는 것입니다! – flawr

+0

단일 시리즈를 플로팅하고 범례 ("범주 형 축")를 반영하도록 'XTickLabel'을 변경하는 것이 더 일반적입니다 (X 축에서 1,2,3 대신 a, b, c) - 그러나 당신이 요구 한 것이 아닙니다. 그리고 이렇게하면 다른 색깔을 얻을 수 있습니다 ... – Floris

관련 문제