如何使用Matplotlib在XY平面绘制z=0的等高线图?
在XY平面绘制指定等高线的解决方案
要在XY平面(z=0处)绘制z=0对应的等高线,你需要调整matplotlib中contour方法的参数,指定投影平面和目标等高线层级,修改后的代码如下:
方案1:同时显示3D曲面与XY平面上的等高线
import numpy as np import matplotlib.pyplot as plt def f(x,y): return x**2 + y**2 x = np.linspace(-10,10,100) y = np.linspace(-10,10,100) X,Y = np.meshgrid(x,y) Z = f(X,Y) fig = plt.figure() ax = plt.axes(projection='3d') # 保留3D曲面绘制 ax.plot_surface(X, Y, Z, cmap="autumn_r", rstride=1, cstride=1) # 在z=0的XY平面绘制z=0的等高线 ax.contour(X, Y, Z, levels=[0], cmap="autumn_r", linestyles="solid", zdir='z', offset=0) plt.show()
方案2:仅显示XY平面上的等高线
如果不需要展示3D曲面,直接去掉plot_surface代码即可:
import numpy as np import matplotlib.pyplot as plt def f(x,y): return x**2 + y**2 x = np.linspace(-10,10,100) y = np.linspace(-10,10,100) X,Y = np.meshgrid(x,y) Z = f(X,Y) fig = plt.figure() ax = plt.axes(projection='3d') # 仅在z=0的XY平面绘制z=0的等高线 ax.contour(X, Y, Z, levels=[0], cmap="autumn_r", linestyles="solid", zdir='z', offset=0) # 调整坐标轴范围让视图更清晰 ax.set_zlim(-1, 1) plt.show()
关键参数说明
levels=[0]:明确指定只绘制函数值等于0的等高线,替代默认的10条自动生成的等高线zdir='z':指定将等高线投影到z轴方向的平面上offset=0:设置投影平面的z坐标为0,也就是XY平面的位置
内容的提问来源于stack exchange,提问作者Ian Aragão
相关产品推荐
相关产品推荐

