使用极坐标进行三维曲面绘图

Beginner

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

简介

本实验是一份使用 Python Matplotlib 库通过极坐标创建 3D 曲面的分步指南。本实验假定你具备 Python 编程和 Matplotlib 库的基础知识。

虚拟机提示

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

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

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

导入所需库

我们将首先导入本实验所需的库,其中包括 Matplotlib 和 NumPy。Matplotlib 是一个用于 Python 的绘图库,而 NumPy 是一个用于 Python 编程语言的库,它增加了对大型多维数组和矩阵的支持。

import matplotlib.pyplot as plt
import numpy as np

创建网格

接下来,我们将在极坐标中创建网格并计算相应的 Z 值。我们将创建一个半径值数组 r,一个角度值数组 p,然后使用 NumPy 的 meshgrid() 函数创建 RP 值的网格。最后,我们将使用 Z 方程来计算曲面上每个点的高度。

r = np.linspace(0, 1.25, 50)
p = np.linspace(0, 2*np.pi, 50)
R, P = np.meshgrid(r, p)
Z = ((R**2 - 1)**2)

在笛卡尔坐标系中表示网格

现在,我们将使用 NumPy 的 cos()sin() 函数在笛卡尔坐标系中表示网格。

X, Y = R*np.cos(P), R*np.sin(P)

绘制曲面

在这一步中,我们将使用 Matplotlib 的 plot_surface() 函数绘制曲面。我们将使用 YlGnBu_r 颜色映射来设置曲面的颜色。

fig = plt.figure()
ax = fig.add_subplot(projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.YlGnBu_r)

调整界限并添加标签

最后,我们将使用 Matplotlib 的 set_zlim() 以及 set_xlabel()set_ylabel()set_zlabel() 函数来调整绘图的界限并添加轴标签。我们还将使用 LaTeX 数学模式来书写轴标签。

ax.set_zlim(0, 1)
ax.set_xlabel(r'$\phi_\mathrm{real}$')
ax.set_ylabel(r'$\phi_\mathrm{im}$')
ax.set_zlabel(r'$V(\phi)$')

总结

在本实验中,我们学习了如何使用 Python 的 Matplotlib 库通过极坐标创建三维曲面。我们首先导入所需的库,在极坐标中创建网格,在笛卡尔坐标系中表示该网格,绘制曲面,最后调整界限并添加轴标签。