Matplotlib - 三维等高线图
Matplotlib - 三维等高线图
Section titled “Matplotlib - 三维等高线图”三维等高线图类似于二维等高线图,但它在三维空间中可视化。它显示函数 Z = f(X, Y) 的等高线,这些等高线绘制在对应 Z 值的不同高度上。
要在 Matplotlib 中创建三维图表,首先需要导入 mpl_toolkits.mplot3d 工具包,它提供了必要的工具。然后,创建一个带有 ‘3d’ 投影的 Axes 对象。
ax.contour3D() 函数用于创建图表。与它的二维对应物类似,它需要在规则的二维网格 (X, Y, Z) 上输入数据。
示例:函数的三维等高线图
Section titled “示例:函数的三维等高线图”import matplotlib.pyplot as pltimport numpy as np# 对于诸如 contour3D 的基础三维图表,如果使用 plt.axes(projection='3d') 或 plt.figure().add_subplot(projection='3d'),则无需显式导入 mplot3d 工具包。# from mpl_toolkits import mplot3d # 为了清晰或使用高级功能,显式导入仍是好习惯
# 1. 定义要绘制的函数def f(x, y): return np.sin(np.sqrt(x ** 2 + y ** 2)) # 示例:Sync 函数
# 2. 创建数据网格x = np.linspace(-6, 6, 30)y = np.linspace(-6, 6, 30)X, Y = np.meshgrid(x, y)Z = f(X, Y)
# 3. 创建一个 figure 和一个三维 Axesfig = plt.figure(figsize=(8, 6))ax = plt.axes(projection='3d')
# 4. 绘制三维等高线图# 参数:X, Y, Z 数据网格# 50:等高线级别数量# cmap:色谱(例如,'viridis', 'coolwarm', 'binary')contour_plot = ax.contour3D(X, Y, Z, 50, cmap='viridis')
# 5. 自定义图表ax.set_xlabel('X axis')ax.set_ylabel('Y axis')ax.set_zlabel('Z axis (f(x,y))')ax.set_title('3D Contour Plot Example')
# 可选:添加颜色条# fig.colorbar(contour_plot, shrink=0.5, aspect=10, label='f(x,y)')
# 可选:调整视角# ax.view_init(elev=40., azim=-35) # elev = 仰角, azim = 方位角
# 6. 显示图表plt.show()此代码生成一个三维图表,显示 Sync 函数 sin(sqrt(x^2 + y^2)) 的等高线。这些等高线绘制在不同的 Z 级别上,并根据 ‘viridis’ 色谱着色,提供了函数在三维空间中峰和谷的视觉表示。添加了坐标轴标签和标题以提高清晰度。您可以在 Matplotlib 窗口中交互式地旋转三维图表。
ax.contour3D() 的关键参数:
Section titled “ax.contour3D() 的关键参数:”X、Y、Z:表示坐标和函数值的二维数组。levels(或位置整数):指定等高线级别的数量或值。cmap:用于根据等高线的 Z 值着色的色谱。colors:可用于代替cmap设置线条的单一颜色或颜色序列。linewidths:控制等高线的粗细。
您可以将 contour3D 与其他三维图表类型结合使用,例如在同一 Axes 上使用 plot_surface 或 scatter3D,以实现更复杂的可视化。