Создание анимированных изображений с использованием Matplotlib

Beginner

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

Введение

В этом лабораторном занятии мы научимся создавать анимированное изображение с использованием предварительно вычисленных списков изображений. Для создания анимации мы будем использовать библиотеку Matplotlib в Python. Цель этого лабораторного занятия - показать процесс создания анимированного изображения и дать базовое понимание того, как это работает.

Советы по работе с ВМ

После запуска ВМ перейдите в левый верхний угол и переключитесь на вкладку Notebook, чтобы приступить к практике с Jupyter Notebook.

Иногда вам может потребоваться подождать несколько секунд, пока Jupyter Notebook загрузится полностью. Валидация операций не может быть автоматизирована из-за ограничений Jupyter Notebook.

Если вы сталкиваетесь с проблемами во время обучения, не стесняйтесь обращаться к Labby. Оставьте отзыв после занятия, и мы оперативно решим проблему для вас.

Импорт библиотек

Для начала нам нужно импортировать библиотеки, которые мы будем использовать. Мы будем использовать библиотеку Matplotlib для создания анимации и библиотеку Numpy для генерации данных для анимации.

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

Создайте объекты Figure и Axes

Далее нам нужно создать объекты Figure и Axes, которые мы будем использовать для создания анимации. Мы будем использовать метод subplots для создания этих объектов.

fig, ax = plt.subplots()

Определите функцию

Теперь нам нужно определить функцию, которую мы будем использовать для генерации данных для анимации. В этом примере мы будем использовать функции синус и косинус для генерации данных.

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

Генерируем данные

Мы будем использовать метод linspace из библиотеки Numpy для генерации данных для анимации. Мы будем генерировать два набора данных: 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))  ## show an initial one first
    ims.append([im])

Создаем анимацию

Теперь мы создадим анимацию с использованием метода ArtistAnimation. Мы передадим в него объект figure, список ims, интервал между кадрами и задержку повторения.

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

Показываем анимацию

Наконец, мы будем использовать метод show для отображения анимации.

plt.show()

Резюме

В этом практическом занятии мы узнали, как создавать анимированное изображение с использованием предварительно вычисленных списков изображений. Мы использовали библиотеку Matplotlib в Python для создания анимации и библиотеку Numpy для генерации данных для анимации. Мы создали объекты figure и axes, определили функцию, сгенерировали данные, создали кадры для анимации и создали саму анимацию. Затем мы отобразили анимацию с использованием метода show. Это практическое занятие дало базовое понимание того, как создавать анимированное изображение, и продемонстрировало процесс этого.