You need to enable JavaScript to run this app. 如何在单张3D散点图中绘制两个pandas DataFrame并区分颜色
优惠活动
大模型
产品
解决方案
定价
更多

如何在单张3D散点图中绘制两个pandas DataFrame并区分颜色

核心实现思路

无需改动原有代码的基础绘图框架,只需要在同一个已创建的3D坐标轴对象ax上,分别对两个独立DataFrame执行两次scatter绘制操作即可。Matplotlib的3D坐标轴会自动将两次绘制的内容叠加在同一画布上,通过给两次绘制设置不同的颜色、不同的图例标识,就能清晰区分两组数据。

调整后的完整可运行代码

import seaborn as sns
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 假设你用于绘图的两个独立DataFrame分别为 df1、df2
sns.set(style="darkgrid")

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 提取并绘制第一组DataFrame的三维数据
x1 = df1['xitem']
y1 = df1['yitem']
z1 = df1['zitem']
# 指定第一组数据为蓝色,设置对应图例标签
ax.scatter(x1, y1, z1, color='#1f77b4', label='第一组数据')

# 提取并绘制第二组DataFrame的三维数据
x2 = df2['xitem']
y2 = df2['yitem']
z2 = df2['zitem']
# 指定第二组数据为橙色,和第一组颜色形成明显视觉区分
ax.scatter(x2, y2, z2, color='#ff7f0e', label='第二组数据')

# 设置共用的坐标轴标签,两组数据共享同一套坐标系
ax.set_xlabel("X Label")
ax.set_ylabel("Y Label")
ax.set_zlabel("Z Label")

# 显示图例,明确不同颜色对应的数据集
ax.legend()

plt.show()

实操注意事项

  • 颜色配置无强制要求:可以替换为任意你需要的色值,不管是十六进制色值、matplotlib预设的颜色名称,只要两次scatter传入的color参数存在明显视觉差异即可
  • 适配自身列名:如果两个DataFrame的三维列名不完全一致,只需要把代码里df['列名']部分替换为你实际的列名即可,不需要强制统一列名
  • 避免冗余操作:坐标轴标签只需要设置一次,反复设置不会报错但属于无效代码;不需要为第二个数据集新建画布、新建子图,始终操作同一个ax对象就能保证内容绘制在同一张图上
  • 图例不要遗漏:如果不调用ax.legend(),读者无法区分两种颜色对应的数据集,实际使用时建议把label值设置为能代表数据集含义的文本,比如“训练集”“测试集”之类的

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 11:45:04