我有一个matlab代码,其中我绘制了几个2d点,属于16类,所以我使用16种不同的颜色。有没有简单的方法让图例表示每种颜色的类名?Matlab的图形绘制循环用不同的颜色
代码看起来是这样的:
for i=1:length(data)
color = class_color(i);
plot(data(i,1),data(i,2),'*','Color',color);
hold on;
end
我有一个matlab代码,其中我绘制了几个2d点,属于16类,所以我使用16种不同的颜色。有没有简单的方法让图例表示每种颜色的类名?Matlab的图形绘制循环用不同的颜色
代码看起来是这样的:
for i=1:length(data)
color = class_color(i);
plot(data(i,1),data(i,2),'*','Color',color);
hold on;
end
这是一个坏主意,用16种颜色来区分数据点。喜欢的颜色将融合在一起。我建议使用不同的标记+颜色。四个标记,如'*'
,'x'
,'+'
,'.'
等,每个标记有四种颜色。那么你可以使用legend('Class 1','Class 2', Class n')
。它应该显示特定颜色的每个标记。这可能是这样的情况,如果最好写出没有循环的每一行,并且在每个标记/颜色/类描述它是什么之后添加%注释,以防以后必须回到此代码。这不是一个真正的解决方案,但是这就是我要做的。
您可以绘制单个类的所有数据点以及逻辑索引。
假设你有某处定义的类,在class_number
这是相同的长度data
说,与条目从1
到16
,和c_colors
,长度为16的单元阵列与对应于每个类别的颜色:然后
for jj = 1:16
mask = (class_number==jj);
plot(data(mask,1),data(mask,2),'*','Color',c_colors{jj});
hold on
end
hold off
(未测试)。
然后,您可以将类的名称存储在单元格数组中,并在其上调用legend
。
class_name{1} = 'Type a';
class_name{2} = 'Type b';
% etc, up to
class_name{15} = 'Type o';
class_name{16} = 'Type p';
legend(class_name);
我的问题不是如何用多个值调用图例,而不是将点的颜色与图例的特定值相关联 –
@ConstantinePat好吧,不知道如何将它添加到你的原始版本的情节,但建议另一种绘图方式应该与它一起工作。 – Steve
标记颜色的想法是一个很好的想法,因为我可以区分不同的子类,虽然“legend('class1',... etc)部分不起作用,因为图例不知道相应的类,它只是指前16个样本,它们恰好是ay类的 –