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

Python中沿y轴堆叠2D等高线图的空图问题求解

沿Y轴堆叠2D等高线图的修正方案

问题核心原因

当将zdir设为'y'后绘图空白,本质是contourf的坐标轴参数对应关系错误:

  • 沿Z轴堆叠时,等高线平面是X-Y平面(垂直于Z轴),因此传入x, y网格与对应数据,搭配zdir='z', offset=s(s为Z轴固定位置)
  • 沿Y轴堆叠时,等高线平面切换为X-Z平面(垂直于Y轴),必须传入X和Z维度的网格数据,而非原有的X-Y网格,同时offset=s对应Y轴的固定位置。

修正后的完整代码

# 沿Y轴堆叠2D等高线图
import matplotlib.pyplot as plt
import numpy as np

# 生成X-Z平面的网格(x、x3需提前定义为一维数组)
x_mesh, z_mesh = np.meshgrid(x, x3)

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

contours3D = []
for i, s in enumerate(x3):
    # 固定Y轴为s,计算X-Z平面上的数值分布
    fe_data = FE_ethylene(x_mesh, s, z_mesh)
    # 绘制X-Z平面的等高线,绑定到Y=s的位置
    contours3D.append(ax.contourf(x_mesh, z_mesh, fe_data, zdir='y', offset=s, 
                                  levels=levels, cmap='rainbow', alpha=1.0-i/10))

# 调整坐标轴范围:Y轴对应x3的取值区间
ax.set_xlim3d(0.45, 2.45)
ax.set_ylim3d(min(x3), max(x3))
ax.set_zlim3d(0.07, 0.13)

# 设置刻度:Y轴刻度匹配x3的分布
ax.set_xticks(np.linspace(0.6, 2.4, 5))
ax.set_yticks(np.linspace(min(x3), max(x3), 5))
ax.set_zticks(np.linspace(0.08, 0.12, 5))

# 修改坐标轴标签,对应新的轴映射
ax.set_xlabel("Carbon content (mg/cm2)")
ax.set_ylabel("Sustainion content (mg/cm2)")
ax.set_zlabel("PTFE content (mg/cm2)")

plt.show()

关键调整点

  • 生成x_mesh和z_mesh:替换原有的X-Y网格,确保等高线绘制在正确的X-Z平面上
  • 调整FE_ethylene参数:传入x_mesh、固定Y值s、z_mesh,保证输出数据与网格形状一致
  • 坐标轴适配:将Y轴的范围、刻度切换为x3的取值,标签对应调整为堆叠维度的物理意义

内容的提问来源于stack exchange,提问作者Daniel Curulla Ferre

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:05:02