我正在研究聚类算法,需要将散点图中属于同一聚类的所有点标记为相同的颜色。我有一个列表,指示每个点该点属于哪个簇,用整数 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 documentation处的颜色参数.
基本上,您需要将数据分成簇,然后在循环中调用 pyplot.scatter,每个簇都使用不同的项目作为颜色参数。
您可以使用 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() )
关于python - 散点图按颜色分隔簇 matplotlib python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849932/