在Matlab中使用不同的颜色

时间:2012-02-03 01:37:57

标签: matlab colors

在MATLAB的3D散点图中,我想要突出显示15个不同的数据集。我可以看到MATLAB有8种特定的颜色。有没有其他方法我可以使用7种颜色来区分聚类?

由于

3 个答案:

答案 0 :(得分:3)

我建议您使用此文件交换提交 - Generate maximally perceptually-distinct colors

它允许您创建具有非常显着颜色的色彩映射,并使用COLORMAP函数应用它们。有关更多选项,请参阅此提交的帮助。

colors = distinguishable_colors(n_colors);

对于3D散射,您可以将此颜色用作SCATTER3中的参数(C):

scatter3(X,Y,Z,[],colors)

要将此颜色用于不同的行,请将它们设置为当前数字的默认颜色顺序:

set(gcf,'DefaultAxesColorOrder',colors)

或所有数字:

set(0,'DefaultAxesColorOrder',colors

答案 1 :(得分:2)

您可以使用 set 使用颜色属性。您必须首先获得图形对象和set(h,'color',[0.2 0.3 0.9])的句柄 h 。每个通道的颜色为rgb,范围从0到1.

答案 2 :(得分:1)

来自Matlab documentation

  

散射(X,Y,S,C)在指定的位置显示彩色圆圈   由向量X和Y(必须是相同的大小)。

     

S确定每个标记的面积(在点^ 2中指定)。 S可以   与X和Y或标量长度相同的向量。如果S是标量,   MATLAB绘制所有相同大小的标记。如果S为空,则为默认值   使用大小。

     

C确定每个标记的颜色。当C是向量时相同   长度为X和Y,C中的值线性映射到颜色   在当前的colormap中。当C是1乘3矩阵时,它指定了   标记的颜色为RGB值。如果你有3分   散点图并希望将颜色作为色彩图的索引,   C应该是3乘1的矩阵。 C也可以是一个颜色字符串(见   ColorSpec用于颜色字符串说明符列表。)

因此,例如,假设您的聚类由矩阵X和Y的列给出,第k列是第k个聚类,X是X坐标,Y是Y坐标。我们可以按照以下方式做你想做的事:

% make some random data in clusters:
n = 15;
m = 42;
X = 0.2*rand(m,n) + repmat(rand(1,n),m,1);
Y = 0.2*rand(m,n) + repmat(rand(1,n),m,1);
% lets change the colour map:
colormap(jet);
% now plot each, one at a time, and each with a different colour:
hold on;
for k=1:n
    scatter(X(:,k),Y(:,k),40,k/n*ones(m,1));
end

如果你不喜欢这些颜色,你可以改变颜色图,如果你不喜欢颜色图,你可以像其他答案所指出的那样插入你想要的任何RGB值。