能否在Python中绘制如图所示的2D与3D等高线组合图?
Python实现2D与3D等高线组合图的方案
完全可以用Python实现这类2D+3D等高线组合图,核心依赖matplotlib库(搭配mpl_toolkits.mplot3d模块),即使没有精确数学方程,用模拟数据或实际数值数据就能完成实现。
示例代码(模拟数据版)
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 生成网格坐标 x = np.linspace(-5, 5, 100) y = np.linspace(-5, 5, 100) X, Y = np.meshgrid(x, y) # 模拟复杂地形的Z值(无需真实方程,用高斯函数叠加模拟) Z = np.exp(-(X**2 + Y**2)/2) + 0.5*np.exp(-((X-2)**2 + (Y-2)**2)/4) + 0.3*np.exp(-((X+3)**2 + (Y-1)**2)/3) # 创建画布与双栏布局 fig = plt.figure(figsize=(12, 6)) # 左侧3D等高线图(带底部投影等高线) ax3d = fig.add_subplot(121, projection='3d') # 绘制3D曲面+底部等高线投影 surface = ax3d.plot_surface(X, Y, Z, cmap='viridis', alpha=0.7) ax3d.contour(X, Y, Z, zdir='z', offset=np.min(Z)-0.2, cmap='viridis') ax3d.set_xlabel('X') ax3d.set_ylabel('Y') ax3d.set_zlabel('Z') ax3d.set_title('3D等高线图') # 右侧2D等高线热力图 ax2d = fig.add_subplot(122) # 填充式等高线+黑色轮廓线 ax2d.contourf(X, Y, Z, cmap='viridis') ax2d.contour(X, Y, Z, colors='black') ax2d.set_xlabel('X') ax2d.set_ylabel('Y') ax2d.set_title('2D等高线热力图') # 共享颜色条 fig.colorbar(surface, ax=[ax3d, ax2d], shrink=0.8) plt.tight_layout() plt.show()
关键说明
- 若有实际数值数据(比如从CSV、TXT读取的离散点),只需将示例中模拟的
X、Y、Z替换为你的真实数据即可,无需依赖数学方程。 - 可通过调整
cmap(配色方案)、alpha(曲面透明度)、等高线层级(contour函数的levels参数)、子图布局等,匹配参考图的视觉风格。
内容的提问来源于stack exchange,提问作者Mamdud
相关产品推荐
相关产品推荐

