在不同的集群中绘制数据点

时间:2016-10-20 02:27:16

标签: matlab plot matlab-figure scatter-plot

我的数据点和群集号如下:

X        Y       cluster
-0.42042 0.2071  0
-1.4986  -1.8658 0
-0.50905 -0.0751 0
2.1978   1.9568  1
1.4901   1.6177  1
1.6961   1.8293  1
1.6021   0.0857  1 
0.87831  0.71435 1
2.6688   1.3426  1
-1.741   0.90686 2
-1.8332  0.35599 2
-3.0733  0.42656 2
-2.1991  0.41843 2
-2.8099  0.93542 2
-1.3631  1.0914  2

以上数据未排序,因此我使用sortrows对群集号进行排序,我得到了上述数据。

我必须绘制这些集群。是否有用于绘制聚类的MATLAB函数?我知道我们可以使用这样的东西:plot(M(:,1), M(:,2), '.');

但是这个情节在一个集群中都是值。我必须根据数据绘制三个簇。簇是0,1,2。因此应该绘制具有三种不同颜色的三个聚类。所以像这样:

enter image description here

知道如何去做吗?

3 个答案:

答案 0 :(得分:2)

所以你可以通过以下几种方式做到: 您可以使用颜色的当前颜色映射,只需:

scatter(x,y,'cdata',cluster,'marker','.');

或者您在代码中写的

scatter(M(:,1),M(:,2),'cdata',M(:,3),'marker','.');

您也可以使用预定义的颜色贴图而不是默认的

ClusterColorMap=rand(max(M(:,3)),3); %random colormap
colormap(ClusterColorMap);
scatter(M(:,1),M(:,2),'cdata',M(:,3),'marker','.');

此处ClusterColorMap将有3行,每行包含特定颜色(在此处选择的3列中的RGB格式为随机颜色)。 如果您知道高级中的簇数,则可以将此矩阵设置为具有特定值。

答案 1 :(得分:1)

您需要将数据分成三组并分别绘制。 假设你有三个变量XYcluster,那就是这样:

grp1 = cluster==0;
grp2 = cluster==1;
grp3 = cluster==2;

然后单独绘制每个组:

plot(X(grp1),Y(grp1),'.', X(grp2),Y(grp2),'.', X(grp3),Y(grp3),'.')

答案 2 :(得分:1)

这是直接的方法:

gscatter(x,y,cluster)

以下是您的数据示例:

clusters

如果你想设置颜色,符号等......

gscatter(x,y,cluster,'cmk','p*^')

cluster2