假设我有一个 1000x2 数据集及其相应的 1000x1 标签。
我们可以将数据分成10个类(标签数组有10个唯一值,范围从1到10)。
在Matlab中用10种不同颜色可视化这10个类的最短方法是什么?
我目前只使用两个类手动完成:
class_1 = data(labels == 1,:);
class_2 = data(labels == 2,:);
plot(class_1(:,1),class_1(:,2),'*');
hold on;
plot(class_2(:,1),class_2(:,2),'o');
任何指针都将受到赞赏。
答案 0 :(得分:2)
如果没有为每个类定义颜色,MATLAB将自动更改每个新绘图的颜色,但默认情况下只定义了7种颜色,因此对于10个绘图的情况,某些类将具有相同的颜色。
解决问题的一种方法是在单元格数组中定义颜色和标记,然后在循环中进行绘图。以下是class_1
为蓝色星球和class_2
绿色圆圈的示例:
classes = {class_1, class_2};
my_colors = {[0 0 1], [0 1 0]};
my_markers = {'*','o'};
figure(1), hold on
for i=1:length(classes)
plot(classes{i}(:,1),classes{i}(:,2),'Color', my_colors{i}, 'Marker', my_markers{i});
end
这可以很容易地扩展到所有10个类,并且您可以轻松地更改每个类的颜色和标记。
您可以做的另一件事是更改MATLAB的默认颜色数,如果您不喜欢它们,您还可以更改默认颜色。您可以在此处阅读:Why Are Plot Lines Different Colors?
答案 1 :(得分:0)
根据所使用的colourmap(内置的colourmap' jet'可能最适用于此目的,但您也可以create your own),您只需使用labels
向量作为输入scatter
函数的颜色。这将自动将该矢量中的值范围映射到使用的整个色彩映射。
scatter(data(:,1),data(:,2),[],labels)
(如果您想要更改默认标记大小,请将[]
更改为数字