Matplotlib 二维和三维绘图

Beginner

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

简介

本实验将指导你使用 Matplotlib 创建一个同时包含二维和三维绘图的图形。二维绘图将显示一个阻尼振荡,而三维绘图将显示一个正弦波。

虚拟机提示

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

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

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

导入库

在这一步中,我们将导入本实验所需的库。我们将使用 Matplotlib 进行绘图,NumPy 创建数组,以及 mpl_toolkits 进行三维绘图。

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

定义函数

在这一步中,我们将定义一个生成阻尼振荡的函数。

def f(t):
    return np.cos(2*np.pi*t) * np.exp(-t)

创建图形

在这一步中,我们将创建一个包含两个子图的图形。第一个子图将是二维绘图,第二个子图将是三维绘图。

fig = plt.figure(figsize=plt.figaspect(2.))
fig.suptitle('A Tale of 2 Subplots')

创建二维绘图

在这一步中,我们将创建一个阻尼振荡的二维绘图。

ax1 = fig.add_subplot(2, 1, 1)
t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)
t3 = np.arange(0.0, 2.0, 0.01)

ax1.plot(t1, f(t1), 'bo',
         t2, f(t2), 'k--', markerfacecolor='green')
ax1.grid(True)
ax1.set_ylabel('Damped oscillation')

创建三维绘图

在这一步中,我们将创建一个正弦波的三维绘图。

ax2 = fig.add_subplot(2, 1, 2, projection='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)

surf = ax2.plot_surface(X, Y, Z, rstride=1, cstride=1,
                        linewidth=0, antialiased=False)
ax2.set_zlim(-1, 1)

显示绘图

在这一步中,我们将显示该图形。

plt.show()

总结

在本实验中,我们使用 Matplotlib 创建了一个同时包含二维和三维绘图的图形。二维绘图展示了一个阻尼振荡,而三维绘图展示了一个正弦波。我们使用 NumPy 创建数组,并使用 mpl_toolkits 进行三维绘图。