python - 散点图按颜色分隔簇 matplotlib python

标签 python matplotlib cluster-analysis k-means scatter-plot

我正在研究聚类算法,需要将散点图中属于同一聚类的所有点标记为相同的颜色。我有一个列表,指示每个点该点属于哪个簇,用整数 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/

相关文章:

python - python中如何区分 "a string"和 "a actual code"?

python - for 循环中函数的子图

Python 错误 : "ImportError: No module named six"

java - 在 Java 中使用 ELKI 进行预计算聚类评估

c# - 数据聚类方法

用于商业用途的 Java 机器学习库?

python - 图像覆盖某些像素

python - 如何按 block 将函数应用于 Pandas 数据框?

python - 以特殊格式打印当前 UTC 日期时间

python - 如何使用 Matplotlib 在图形中间绘制一个轴