这里我有一个for循环来绘制矩阵的内容。
基于'type'值,我确定了绘图对象(ks,bO,rX)
for k = 1:length(data1)
if(type(k)==1)
h=plot(data1(k,1),data1(k,2),'ks');set(h,'linewidth',2);hold on;
elseif(type(k) ==0)
h=plot(data1(k,1),data1(k,2),'bO');set(h,'linewidth',2); hold on;
else
h=plot(data1(k,1),data1(k,2),'rX');set(h,'linewidth',2); hold on;
end
end
我有点困惑,想找到一种方法将传奇放在我的最终图中,这显示了我自己对每个对象的解释(ks,bO,rX)。
答案 0 :(得分:3)
默认情况下,MATLAB将看到此循环的输出不是三个图,而是多个单独的绘图点。尽管某些点是使用相同的设置绘制的,但它并不会自动将它们识别为同一系列的一部分。如果你给它三个图例条目,它会将它们分配给绘制的前三个点。
最简单的方法是更改绘制和使用逻辑索引的方式,而不是循环:
h=plot(data1(type==1,1),data1(type==1,2),'ks'); set(h,'linewidth',2);
hold on;
h=plot(data1(type==0,1),data1(type==0,2),'bO'); set(h,'linewidth',2);
h=plot(data1(type==-1,1),data1(type==-1,2),'rX'); set(h,'linewidth',2);
现在我们只有三个图,所以给三个图legend
应该给我们这些图(按照它们被绘制的顺序)和我们的标签之间的正确匹配:
legend({'Type 1'; 'Type 0' ; 'Type -1'})