使用 Matplotlib 进行 3D 曲面绘图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验是一个关于如何使用 Python 中的 Matplotlib 绘制 3D 曲面的分步教程。3D 曲面使用 coolwarm 颜色映射进行着色,并通过使用 “antialiased=False” 使其不透明。本教程还演示了如何使用 .LinearLocator 和自定义格式设置 z 轴刻度标签。

虚拟机提示

虚拟机启动完成后,点击左上角切换到 “笔记本” 标签,以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。

导入库

import matplotlib.pyplot as plt
import numpy as np

from matplotlib import cm
from matplotlib.ticker import LinearLocator

我们导入本教程所需的库。Matplotlib 是一个用于 Python 的绘图库,提供了类似于 MATLAB 的接口。Numpy 是 Python 中科学计算的基础包。

创建图形和坐标轴

fig, ax = plt.subplots(subplot_kw={"projection": "3d"})

我们使用 subplot_kw 参数设置为 "projection": "3d" 来创建一个图形和坐标轴。这将创建一个绘图的 3D 投影。

创建数据

X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

我们为绘图创建数据。我们将 XY 值创建为数组,其值从 -5 到 5 均匀分布,增量为 0.25。然后,我们使用 np.meshgrid() 创建 XY 值的网格。我们使用该网格来计算 R 值,即到原点的距离。然后,我们使用 Rsin() 函数计算 Z 值。

绘制曲面

surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

我们使用 plot_surface() 函数绘制曲面。我们传入 XYZ 值,以及设置为 cm.coolwarmcmap 参数,以便使用 coolwarm 颜色映射为曲面着色。我们还将 linewidth=0 设置为移除线框,并将 antialiased=False 设置为使曲面不透明。

自定义 Z 轴

ax.set_zlim(-1.01, 1.01)
ax.zaxis.set_major_locator(LinearLocator(10))
## A StrMethodFormatter is used automatically
ax.zaxis.set_major_formatter('{x:.02f}')

我们使用 set_zlim() 函数自定义 z 轴,将 z 轴的范围设置为 -1.01 到 1.01。然后,我们使用 set_major_locator() 函数,通过 LinearLocator(10) 将 z 轴上的刻度数量设置为 10。最后,我们使用 set_major_formatter() 函数,通过 StrMethodFormatter 来格式化 z 轴刻度标签。

添加颜色条

fig.colorbar(surf, shrink=0.5, aspect=5)

我们使用 colorbar() 函数为绘图添加一个颜色条。我们传入 surf 对象,并设置 shrink=0.5aspect=5 来调整颜色条的大小。

总结

本教程演示了如何使用 Python 中的 Matplotlib 绘制三维曲面。我们创建了一个图形和坐标轴,创建了数据,绘制了曲面,自定义了 z 轴,并添加了颜色条。Matplotlib 是在 Python 中创建可视化的强大工具。