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

如何绘制兼具3D视图与顶部2D投影的数据可视化图?

在Matplotlib中同时展示3D散点图与顶部2D投影

要实现3D视图+顶部2D投影的效果,你可以通过在同一个画布上创建3D轴和对齐的2D子轴来完成,以下是修改后的完整代码:

import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据
x = np.linspace(30, 40, 100)
y = np.linspace(70, 80, 100)
z = np.linspace(100, 400, 100)

fig = plt.figure(figsize=(10, 8))

# 创建3D主坐标轴
ax3d = fig.add_subplot(projection='3d')
ax3d.scatter3D(x, y, z, color="green", alpha=0.6)
ax3d.set_title("3D Scatter Plot with Top 2D Projection")
ax3d.set_xlabel('X')
ax3d.set_ylabel('Y')
ax3d.set_zlabel('Z')

# 获取3D轴的位置参数,用于对齐顶部2D子图
pos = ax3d.get_position()
# 创建顶部2D子轴,位置与3D轴的x-y区域对齐,高度设为0.15
ax2d = fig.add_axes([pos.x0, pos.y1 + 0.01, pos.width, 0.15])
# 绘制x-y平面的投影散点
ax2d.scatter(x, y, color="green", alpha=0.6)
ax2d.set_title("Top 2D Projection (X-Y Plane)")
ax2d.set_xlabel('X')
ax2d.set_ylabel('Y')
# 调整2D轴的刻度,和3D轴保持一致
ax2d.set_xlim(ax3d.get_xlim())
ax2d.set_ylim(ax3d.get_ylim())

plt.show()

关键实现细节:

  • 使用fig.add_axes()创建与3D轴对齐的2D子图,通过ax3d.get_position()获取3D轴的位置坐标,确保2D子图精准放在3D轴的正上方
  • 顶部2D投影本质是忽略Z轴数据,仅绘制X-Y平面的散点,同时保持刻度范围和3D轴一致,保证视觉统一
  • 通过alpha参数设置透明度,避免遮挡,提升整体可视化效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:35:49