Matlab、柱状图和图例

Matlab、柱状图和图例,matlab,Matlab,我有一个函数plot_result(),它根据测试结果绘制条形图。我有两个向量: R = [0 1 1 -1] containing logical true or false from the questions. and T = [0 1 2 3] containing time spent on each questions. 0 - in R means a question not answered 如果答案为1,则条形图为绿色,否则为红色。 但是这些传说显示了一些出乎意料的事情

我有一个函数
plot_result()
,它根据测试结果绘制条形图。我有两个向量:

R = [0 1 1 -1] containing logical true or false from the questions. and
T = [0 1 2 3] containing time spent on each questions.

0 - in R means a question not answered
如果答案为1,则条形图为绿色,否则为红色。 但是这些传说显示了一些出乎意料的事情

在上述情况下,R和T 图例显示:

Green - "Right answer"
Green - "Right answer"
而不是

Green - "Right answer"
Red   - "Wrong answer"
有时它也会显示3个传奇而不是两个——我做错了什么

R = [0 1 1 -1];
T = [0 1 2 3];


if sum(T) ~= 0 

% Barchart
figure;
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
   end

         set(gca,'xTick',1:length(R),'xTickLabel',1:length(R))
         xlabel('Answer No..');
         ylabel('Time per. question')
         title('Question vs. time')
         set(gca,'YLim',[0 max(T)])

         [~,legendsIWant]=unique(nonzeros(R)); 
         legend(h(legendsIWant),legendInfo(legendsIWant),'Location', 'BestOutside'   'FontSize', 8);

给定输入的问题是
[~,legendsIWant]=unique(非零(R))
将给出对应于非零(R)而非R的索引值

一个可能的解决方法是获取所有唯一值位置,然后丢弃任何对应于零的值 e、 g.将上述线路更换为

[uniqueValues,legendsIWant]=unique(R)
legendsIWant=legendsIWant(uniqueValues~=0)

您是否有一组生成3个图例条目的输入?谢谢,它可以工作。我完全忽略了该行返回的是索引,而不是值​​他们自己。谢谢。没问题,我仍然不确定如何创建3个条目,这可能无法解决该问题,如果您有一组导致3个条目的输入,我将有兴趣查看它!由于某种原因,我不能想出3个传奇,这可能只是一次一次性的。