简介
在本实验中,我们将学习如何使用 Matplotlib(Python 中一个流行的数据可视化库)为 3D 线框图制作动画。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
在本实验中,我们将学习如何使用 Matplotlib(Python 中一个流行的数据可视化库)为 3D 线框图制作动画。
虚拟机启动完成后,点击左上角切换到“笔记本”标签,以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们会及时为你解决问题。
第一步是导入必要的库:Matplotlib、NumPy 和 time。
import time
import matplotlib.pyplot as plt
import numpy as np
第二步是设置图形和子图。我们将使用add_subplot创建一个 3D 图。
fig = plt.figure()
ax = fig.add_subplot(projection='3d')
第三步是使用linspace创建一个网格。
xs = np.linspace(-1, 1, 50)
ys = np.linspace(-1, 1, 50)
X, Y = np.meshgrid(xs, ys)
第四步是设置 Z 轴限制,这样就不会在每一帧都重新计算。
ax.set_zlim(-1, 1)
第五步是动态绘制图形。我们将使用一个 for 循环来遍历一系列 phi 值。在每次迭代中,我们将移除上一个线条集合,生成新的数据,绘制新的线框,并在继续之前短暂暂停。
wframe = None
tstart = time.time()
for phi in np.linspace(0, 180. / np.pi, 100):
if wframe:
wframe.remove()
Z = np.cos(2 * np.pi * X + phi) * (1 - np.hypot(X, Y))
wframe = ax.plot_wireframe(X, Y, Z, rstride=2, cstride=2)
plt.pause(.001)
第六步是使用运行动画所花费的总时间来显示平均每秒帧数(FPS)。
print('Average FPS: %f' % (100 / (time.time() - tstart)))
在这个实验中,我们学习了如何使用 Matplotlib 动态绘制三维线框图。我们使用 for 循环遍历一系列 phi 值,生成新数据,绘制新的线框图,并在继续之前短暂暂停。最后,我们使用运行动画的总时间来显示平均每秒帧数(FPS)。