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

如何绘制一维K-means聚类结果散点图并关联聚类标签

首先你可以直接用样本索引作为x轴取值,通过matplotlib内置的颜色映射参数直接关联聚类标签实现分组配色,具体实现代码和说明如下:

完整实现代码

# 导入依赖库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans

# ---- 你原有聚类代码 ----
kmeans = KMeans(n_clusters=2, random_state=123)                 
kmeans.fit(X2)                                                
label = kmeans.fit_predict(X2)
# ----------------------

# 生成x轴:每个样本对应的索引序号
x_axis = np.arange(len(X2))

# 方法1:自动按标签配色,代码更简洁
plt.scatter(x_axis, X2, c=label, cmap="Set1")
plt.xlabel("样本序号")
plt.ylabel("X2取值")
plt.title("2簇K-means聚类结果散点图")
# 配置图例
handles = [
    plt.Line2D([], [], marker='o', color='w', markerfacecolor=plt.cm.Set1(0), markersize=10, label='簇0'),
    plt.Line2D([], [], marker='o', color='w', markerfacecolor=plt.cm.Set1(1), markersize=10, label='簇1')
]
plt.legend(handles=handles)
plt.show()

# 方法2:手动拆分数据分别绘制,可自由指定每个簇的样式
plt.figure()
# 按聚类标签拆分样本
cluster0_x = x_axis[label == 0]
cluster0_y = X2[label == 0]
cluster1_x = x_axis[label == 1]
cluster1_y = X2[label == 1]
# 分别绘制两个簇
plt.scatter(cluster0_x, cluster0_y, c="steelblue", label="簇0")
plt.scatter(cluster1_x, cluster1_y, c="darkorange", label="簇1")
plt.xlabel("样本序号")
plt.ylabel("X2取值")
plt.title("2簇K-means聚类结果散点图")
plt.legend()
plt.show()

参数说明

  • x轴选择:因为你的X2是一维向量,没有第二个特征维度,直接用样本的索引作为x轴即可,每个点对应你输入的19个样本中的一个,逻辑清晰易于对应
  • 标签关联与配色:scatter函数的c参数直接传入聚类得到的label数组,matplotlib会自动为不同标签的点分配不同颜色,cmap参数可自定义配色方案,可选viridis、coolwarm等官方预设配色
  • 手动拆分的方式更灵活,可以单独调整每个簇的点大小、形状、颜色等样式,适配不同的可视化需求

内容的提问来源于stack exchange,提问作者JCV

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 02:06:01