在MATLAB中定义scatter3颜色

时间:2013-09-06 11:20:14

标签: matlab

有没有办法控制scatter3中的颜色?

在我的聚类问题中,我有2个向量 A = 80x3包含我的数据 和index包含集群的索引。所以举个例子 数据点A(i,1) A(i,2) A(i,3) 属于群集index(i)

使用scatter3(A(:,1),A(:,2),A(:,3),50,index','filled')我根据群集绘制所有数据点,但我想为每组点指定颜色。

我尝试了帮助,但我没有管理。

1 个答案:

答案 0 :(得分:4)

你快到了。 scatter3提供了几种定义颜色方案的选项(请参阅文档here)。正如你现在所做的那样,一个是使用标量索引。在这种情况下,着色方案是自动的。另一种选择是使用表示RGB颜色的三元组值。

例如,对于三种颜色,您可以定义自定义色图cmap

color_1 = [1 0.2 0.4];
color_2 = [0.34 0.65 0.87];
color_3 = [0.5 0.5 0.5];

cmap = [color_1; color_2; color_3];

然后根据您的实际索引创建INDEX_color(Nx3)矩阵

INDEX_color = cmap(INDEX,:);

对于更多群组,您可以根据内置色彩映射自动创建INDEX_colorcmap = colormap(jet(10));会生成一个10x3 RGB矩阵,其中包含jet色彩图。

下图

enter image description here

由此代码

提供
A = [rand(20,3); rand(20,3)+1; rand(20,3)+2 ];
INDEX = [ones(20,1); ones(20,1)+1; ones(20,1)+2 ];

color_1 = [1 0.2 0.4];
color_2 = [0.34 0.65 0.87];
color_3 = [0.5 0.5 0.5];

cmap = [color_1; color_2; color_3];

INDEX_color = cmap(INDEX,:);

scatter3(A(:,1), A(:,2), A(:,3), 50, INDEX_color, 'filled')