在MATLAB的3D散点图中,我有15个不同的数据簇要突出显示。我知道MATLAB有8种特定颜色。除此之外,还有其他方法可以使用7种颜色来区分这些簇吗?
谢谢。
谢谢。
colors = distinguishable_colors(n_colors);
对于3D散点图,您可以在SCATTER3中使用这些颜色作为参数(C):
scatter3(X,Y,Z,[],colors)
要将这些颜色用于不同的线,请将它们设置为当前图形的默认颜色顺序:
set(gcf,'DefaultAxesColorOrder',colors)
set(0,'DefaultAxesColorOrder',colors
set(h,'color',[0.2 0.3 0.9])
。颜色值是RGB格式,每个通道的取值范围为0到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值,正如其他答案所指出的。