Matlab,传说中的一个条形图

时间:2014-05-02 16:02:30

标签: matlab

我有一个for循环,在2个向量的基础上创建一个带有4个条形的条形图。 两个栏是红色的,两个是绿色的。红色和绿色意味着两件不同的事情。我想在一个传说中表明,但我该怎么做呢。我尝试了几件事,但没有什么似乎做我想要的。我的最新输出给出了这样的传奇:`

'red color' Wrong answer
'red color' Wrong answer
'green color' right answer'
'green color' right answer

你可以看到输出给了我4个传说,但我只想要2。 如何解决这个问题:

R = [-1 -1 1 1];
T = [2.0741 2.1521 2.9529 2];
figure;  
% Barchart
for i=1:length(T)
   h = bar(i, T(i));
     if i == 1 hold on, end
     if R(i) == -1
       col = 'r';
       legendInfo{i} = ['Wrong answer '];
     else
       col = 'g';
       legendInfo{i} = ['Right answer '];
     end

     set(h, 'FaceColor', col)

end

set(gca,'xTick',1:length(R),'xTickLabel',1:length(R))
xlabel('question number.');
ylabel('time per question')
legend(legendInfo)

1 个答案:

答案 0 :(得分:2)

您可以将句柄传递给legend以指定您想要的条目:

R = [-1 -1 1 1];
T = [2.0741 2.1521 2.9529 2];
figure;  
% Barchart
for i=1:length(T)
   h(i) = bar(i, T(i));
     if i == 1 hold on, end
     if R(i) == -1
       col = 'r';
       legendInfo{i} = ['Wrong answer '];
     else
       col = 'g';
       legendInfo{i} = ['Right answer '];
     end

     set(h(i), 'FaceColor', col)

end
set(gca,'xTick',1:length(R),'xTickLabel',1:length(R))
xlabel('question number.');
ylabel('time per question')

[~,legendsIWant]=unique(R)
legend(h(legendsIWant),legendInfo(legendsIWant));