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个传奇,这可能只是一次一次性的。