如何用Python绘制以聚类编号为颜色维度的3D散点图
3D聚类散点图实现方案
下面给你两种常用的实现方式,分别基于Matplotlib(静态)和Plotly(交互式,匹配你提到的示例效果):
方案1:Matplotlib 静态3D散点图
Matplotlib的3D模块可以实现静态3D散点,用c参数指定聚类列来区分颜色:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 假设你的数据集存储在df中 fig = plt.figure(figsize=(10, 8)) ax = fig.add_subplot(111, projection='3d') # 绘制3D散点,c=df['clus']用聚类编号区分颜色 scatter = ax.scatter(df['Recency'], df['Frequency'], df['Money'], c=df['clus'], cmap='viridis', s=50) # 设置轴标签 ax.set_xlabel('Recency') ax.set_ylabel('Frequency') ax.set_zlabel('Money') # 添加颜色条,标注聚类编号 plt.colorbar(scatter, label='聚类编号') plt.show()
方案2:Plotly 交互式3D散点图(推荐,符合示例效果)
Plotly的实现更简单,自带交互功能(旋转、缩放、悬停查看数据),和你熟悉的2Dhue逻辑一致,直接用color参数指定聚类列:
import plotly.express as px # 假设你的数据集存储在df中 fig = px.scatter_3d(df, x='Recency', y='Frequency', z='Money', color='clus', # 用聚类编号区分颜色 color_continuous_scale='viridis', size_max=10, labels={'clus': '聚类编号'}) # 调整布局,减少空白边距 fig.update_layout(scene=dict( xaxis_title='Recency', yaxis_title='Frequency', zaxis_title='Money'), margin=dict(l=0, r=0, b=0, t=0)) fig.show()
关键说明
- Matplotlib中,3D散点用
c参数替代2D里的hue,cmap可自定义配色方案; - Plotly的
scatter_3d直接支持color参数,和Seaborn的hue用法完全一致,生成的图表支持交互操作,更适合探索聚类结果。
内容的提问来源于stack exchange,提问作者Avnish Thakkar
相关产品推荐
相关产品推荐

