在Matlab中使用不同的颜色

3
在MATLAB的3D散点图中,我有15个不同的数据簇要突出显示。我知道MATLAB有8种特定颜色。除此之外,还有其他方法可以使用7种颜色来区分这些簇吗?
谢谢。
3个回答

3
我建议使用这个文件交换提交 - 生成最大程度感知差异的颜色
它允许您创建一个具有非常明显颜色的色图,并使用COLORMAP函数应用它们。有关更多选项,请参阅此提交的帮助。
colors = distinguishable_colors(n_colors);

对于3D散点图,您可以在SCATTER3中使用这些颜色作为参数(C):

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

要将这些颜色用于不同的线,请将它们设置为当前图形的默认颜色顺序:

set(gcf,'DefaultAxesColorOrder',colors)

对于所有数字:
set(0,'DefaultAxesColorOrder',colors

2
你可以使用set来设置color属性。你需要先获取图形对象的h句柄,然后输入代码set(h,'color',[0.2 0.3 0.9])。颜色值是RGB格式,每个通道的取值范围为0到1。

1

来自Matlab文档

scatter(X,Y,S,C)函数在由向量X和Y指定的位置处显示彩色圆圈(它们必须具有相同的大小)。

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

C参数确定每个标记的颜色。当C是与X和Y长度相同的向量时,C中的值被线性映射到当前颜色映射中的颜色。当C是一个1x3矩阵时,它指定标记的颜色为RGB值。如果您在散点图中有3个点,并希望颜色成为颜色映射的索引,则C应该是一个3x1矩阵。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值,正如其他答案所指出的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接