You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:42:03