如何将3个KMeans聚类散点图合并到同一张Matplotlib图像中?
解决KMeans聚类散点图合并显示问题
你的问题核心是**plt.show()被放在了循环内部**,导致每次绘制完一个聚类就立刻显示单独的图像,无法叠加到同一张图中。另外,重复设置坐标轴标签、标题也没必要,优化后代码如下:
nu_cluster = 3 kmeans = KMeans(n_clusters=nu_cluster,random_state=0) data_df["cluster"] = kmeans.fit_predict(X_std) print("after Kmeans predict") # 可视化部分 plt.figure(figsize=(8, 6)) for i in range(nu_cluster): cluster_data = data_df[data_df["cluster"] == i] # 绘制当前聚类的散点 plt.scatter(cluster_data["charges"], cluster_data["age"], c=[plt.cm.viridis(i / (nu_cluster - 1))], label=f"Cluster {i + 1}") # 统一设置图像属性,只需要执行一次 plt.xlabel("Charges") plt.ylabel("Age") plt.title("Cluster of age against charges", fontsize=16, fontweight="bold") plt.legend(loc="lower right") # 所有聚类绘制完成后,再显示图像 plt.show()
关键修改点:
- 将
plt.show()移到循环外部:确保所有散点都绘制完成后,再一次性显示整张图。 - 将坐标轴标签、标题、图例设置移到循环外:避免重复执行,提升代码效率的同时保证图像属性统一。
这样修改后,三个聚类的散点就会叠加在同一张图里,每个聚类用不同颜色区分,并且能正常显示图例。
内容的提问来源于stack exchange,提问作者alson
相关产品推荐
相关产品推荐

