【问题标题】:Matlab - Scatter plot multiple classess with different colorsMatlab - 散点图具有不同颜色的多个类
【发布时间】:2018-09-29 11:23:18
【问题描述】:

假设我有一个 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');

任何指针将不胜感激。

【问题讨论】:

  • 最简单的方法是使用统计工具箱中的gscatter 函数(如果有的话),它完全可以满足您的需求。

标签: matlab visualization


【解决方案1】:

如果您没有为每个类定义颜色,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?

【讨论】:

  • 另一种方法是使用 RGB 三元组来制作颜色;您可以通过这种方式创建(几乎)任何颜色。
【解决方案2】:

根据使用的颜色图(内置的“jet”可能最适合此目的,但您也可以create your own),您可以简单地使用您的labels矢量作为scatter函数的颜色输入.这将自动将该向量中的值范围映射到使用的整个颜色图。

scatter(data(:,1),data(:,2),[],labels)

(如果要更改默认标记大小,请将[] 更改为数字)

【讨论】:

    猜你喜欢
    • 2019-11-03
    • 2019-03-14
    • 2021-01-25
    • 1970-01-01
    • 2016-06-04
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多