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

如何用Matplotlib的pcolor实现沿Z轴堆叠2D密度图?

Matplotlib堆叠2D密度图(pcolor实现方法)

Matplotlib支持用pcolor实现堆叠2D密度图,只是pcolor本身没有像contourf那样直接的offset参数,需要手动通过3D坐标轴的属性调整来实现。

实现步骤

  • 先创建3D坐标轴对象
  • 绘制每个pcolor图后,获取其返回的PolyCollection对象,调用set_3d_properties()方法设置Z轴偏移位置
  • 调整Z轴范围,确保所有堆叠的图都能正常显示

完整示例代码

import matplotlib.pyplot as plt
import numpy as np

# 生成测试数据
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)

# 生成三组不同的密度数据
Z1 = np.exp(-(X**2 + Y**2)/2)
Z2 = np.exp(-((X-2)**2 + (Y-2)**2)/2)
Z3 = np.exp(-((X+2)**2 + (Y+2)**2)/2)

# 创建3D绘图轴
fig = plt.figure(figsize=(8,6))
ax = fig.add_subplot(projection='3d')

# 定义每个密度图的Z轴偏移量
z_offsets = [0, 1, 2]
datasets = [Z1, Z2, Z3]
cmaps = ['viridis', 'plasma', 'inferno']

# 循环绘制堆叠的pcolor图
for offset, data, cmap in zip(z_offsets, datasets, cmaps):
    pc = ax.pcolor(X, Y, data, cmap=cmap, alpha=0.7)
    # 设置当前pcolor图的Z轴位置
    pc.set_3d_properties(offset=offset, zdir='z')

# 配置坐标轴
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z Offset')
ax.set_zlim(-0.5, 2.5)

plt.colorbar(pc, ax=ax, shrink=0.5)
plt.show()

说明

set_3d_properties()方法可以给2D绘图对象添加3D空间属性,通过offset指定Z轴位置,zdir='z'表示沿Z轴方向堆叠,效果和contourf的offset参数完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 22:12:32