首页 > 编程笔记 > Python笔记 阅读:20

Matplotlib contour3D():绘制三维等高线图(附带实例)

三维等高线图类似于我们在密度和等高线图中探索的等高线图。与二维 ax.contour 图一样,ax.contour3D 要求所有输入数据都采用二维规则网格的形式,并在每个点评估 Z 数据。

【实例】利用 ax.contour3D() 函数绘制三维等高线图。
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt

def f(x, y):
    return np.sin(np.sqrt(x**2 + y**2))

# 构建 x,y 数据
x = np.linspace(-6, 6, 30)
y = np.linspace(-6, 6, 30)
# 将数据网格化处理
X, Y = np.meshgrid(x, y)
Z = f(X, Y)

fig = plt.figure()
ax = plt.axes(projection='3d')
# 50 表示在 z 轴方向等高线的高度层级, binary 颜色从白色变成黑色
ax.contour3D(X, Y, Z, 50, cmap='binary')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.set_title('三维等高线图')
plt.show()
运行程序,效果如下图所示:


图 1 三维等高线图

有时默认的视角不是最佳的,在这种情况下我们可以使用 view_init() 方法设置高程和方位角。例如,以下代码实现将使用 60 度的高程(即 xy 平面上方 60°)和 35° 的方位角(即绕 z 轴逆时针旋转 35°):
ax.view_init(60, 35)
fig
运行程序,效果如下图所示:


图 2 调整视角效果

相关文章