我的数据点和群集号如下:
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。因此应该绘制具有三种不同颜色的三个聚类。所以像这样:
知道如何去做吗?
答案 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)
您需要将数据分成三组并分别绘制。
假设你有三个变量X
,Y
和cluster
,那就是这样:
grp1 = cluster==0;
grp2 = cluster==1;
grp3 = cluster==2;
然后单独绘制每个组:
plot(X(grp1),Y(grp1),'.', X(grp2),Y(grp2),'.', X(grp3),Y(grp3),'.')
答案 2 :(得分:1)