我有一些代码基本上可以做到这一点:
for i = 1:length(ReliabilityStruct)
if (FailureFlags(i) == 0)
plot(X(i), Y(i), '.b');
elseif (FailureFlags(i) == 1)
plot(X(i), Y(i), 'or');
elseif (FailureFlags(i) == 2)
plot(X(i), Y(i), 'og');
elseif (FailureFlags(i) == 3)
plot(X(i), Y(i), 'ok');
else
fprintf('\nUnknown Flag, check Data\n')
return
end
end
drawnow;
legend('Recovery', '1', '2', '3');
所以我的目标是为不同的标志制作一个具有不同符号的图形。见下文:
如您所见,Legend并不完全符合数据。如何更改每个图例条目以解决此问题?或者,有没有更好的方法来解决这个问题?
答案 0 :(得分:3)
我认为你可以使用这样的东西(额外的好处是你避免循环!):
ind = FailureFlags==0;
plot(X(ind), Y(ind), '.b');
ind = FailureFlags==1;
plot(X(ind), Y(ind), 'or');
ind = FailureFlags==2;
plot(X(ind), Y(ind), 'og');
ind = FailureFlags==3;
plot(X(ind), Y(ind), 'ok');
legend('Recovery', '1', '2', '3');
答案 1 :(得分:1)
试一试。在循环中为每个绘图创建一个赋值如下:
p1=plot(X(i), Y(i), '.b');
elseif (FailureFlags(i) == 1)
p2=plot(X(i), Y(i), 'or');
elseif (FailureFlags(i) == 2)
p3=plot(X(i), Y(i), 'og');
elseif (FailureFlags(i) == 3)
p4=plot(X(i), Y(i), 'ok');
然后你可以使用图例来表示具体的事情:
legend([p1 p2],'stuff','morestuff')
答案 2 :(得分:1)
请记住,您可以使用help
命令参考任何函数的用法。对于您的情况,help legend
将为您提供如下的使用示例。
legend(H,string1,string2,string3, ...) puts a legend on the plot
containing the handles in the vector H using the specified strings as
labels for the corresponding handles.
因此,您可以通过将绘图分配给变量(例如p1=plot(X(i), Y(i), '.b');
)来获取绘图处理程序。然后通过使用处理程序作为第一个参数调用命令来绘制图例,例如legend([p1], 'something')
。