使用 Matplotlib 创建动画图像

PythonPythonBeginner
立即练习

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

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

简介

在本实验中,我们将学习如何使用预先计算好的图像列表来创建动画图像。我们将使用 Python 中的 Matplotlib 库来创建动画。本实验的目的是演示创建动画图像的过程,并提供对其工作原理的基本理解。

虚拟机提示

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

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

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

导入库

首先,我们需要导入将要使用的库。我们将使用 Matplotlib 库来创建动画,并使用 Numpy 库来生成动画所需的数据。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation

创建图形和坐标轴对象

接下来,我们需要创建用于创建动画的图形和坐标轴对象。我们将使用 subplots 方法来创建这些对象。

fig, ax = plt.subplots()

定义函数

现在我们需要定义一个函数,用于生成动画所需的数据。在这个例子中,我们将使用正弦和余弦函数来生成数据。

def f(x, y):
    return np.sin(x) + np.cos(y)

生成数据

我们将使用 Numpy 库中的 linspace 方法来生成动画所需的数据。我们将生成两组数据,x 和 y,然后对 y 数据进行重塑以创建一个二维数组。

x = np.linspace(0, 2 * np.pi, 120)
y = np.linspace(0, 2 * np.pi, 100).reshape(-1, 1)

创建动画帧

现在我们将为动画创建帧。我们将使用一个 for 循环来生成 60 帧。在循环的每次迭代中,我们将更新 x 和 y 数据,然后使用 imshow 方法创建一个新的图像对象。然后,我们将把图像对象追加到 ims 列表中。

ims = []
for i in range(60):
    x += np.pi / 15
    y += np.pi / 30
    im = ax.imshow(f(x, y), animated=True)
    if i == 0:
        ax.imshow(f(x, y))  ## 先显示初始的一帧
    ims.append([im])

创建动画

现在我们将使用 ArtistAnimation 方法来创建动画。我们将传入图形对象、ims 列表、帧之间的时间间隔以及重复延迟。

ani = animation.ArtistAnimation(fig, ims, interval=50, blit=True, repeat_delay=1000)

显示动画

最后,我们将使用 show 方法来显示动画。

plt.show()

总结

在本实验中,我们学习了如何使用预先计算好的图像列表来创建动画图像。我们使用 Python 中的 Matplotlib 库来创建动画,并使用 Numpy 库来生成动画所需的数据。我们创建了图形和坐标轴对象,定义了函数,生成了数据,创建了动画帧,并创建了动画。然后,我们使用 show 方法显示了动画。本实验提供了关于如何创建动画图像的基本理解,并演示了创建动画的过程。