我正在研究一种聚类算法,需要将散点图中属于同一聚类的所有点标记为相同的颜色。我有一个列表,该列表指示每个点所属的簇,并用整数0 ... k标记,其中k是簇数。我想知道如何将此列表映射到颜色(最好是与事先已知的聚类算法中的聚类数一样多的颜色)。我正在使用python中的matplotlib进行操作,而对于如何解决此问题完全迷失了。
plt.scatter([item[0] for item in dataset],[item[1] for item in dataset],color='b')
plt.scatter([item[0] for item in centroids_list],[item[1] for item in centroids_list],color='r)
plt.show()
现在,这就是我所拥有的,其中聚类点用蓝色表示,质心用红色表示。我想将质心保留为红色,仅更改数据集中点的颜色,以使同一聚类的点具有相同的颜色。我迷失了matplotlib库,真的很感谢任何帮助。
提前致谢!
请参阅pyplot.scatter文档中的color参数。
基本上,您需要将数据分成多个集群,然后在循环中调用pyplot.scatter,每个循环都有一个不同的项作为color参数。
您可以使用scipy.cluster中的vq使用质心将数据分配给群集,如下所示:
assignments = vq( dataset, centroids_list )[0]
clusters = [[] for i in range( len( assignments ) )
for item, clustNum in zip( dataset, assignments ):
clusters[clustNum].append( item )
如果我没有记错的话,至少这是我之前所做的。从那里只是定义一个函数以返回随机颜色,然后:
for cluster in clusters:
plt.scatter([item[0] for item in cluster],[item[1] for item in cluster],color=randomColor() )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句