Создавать анимации с Matplotlib

Beginner

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

Введение

В этом практическом занятии вы научитесь создавать анимацию с использованием Matplotlib. В частности, вы узнаете, как приостанавливать и возобновлять анимацию с использованием методов Animation.pause() и Animation.resume().

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

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

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

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

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

В этом шаге мы импортируем необходимые библиотеки для создания анимации с использованием Matplotlib.

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

Определение анимации

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

class PauseAnimation:
    def __init__(self):
        ## Создаем фигуру и ось
        fig, ax = plt.subplots()
        ax.set_title('Click to pause/resume the animation')

        ## Создаем значения оси x
        x = np.linspace(-0.1, 0.1, 1000)

        ## Начинаем с нормального распределения
        self.n0 = (1.0 / ((4 * np.pi * 2e-4 * 0.1) ** 0.5)
                   * np.exp(-x ** 2 / (4 * 2e-4 * 0.1)))

        ## Создаем график
        self.p, = ax.plot(x, self.n0)

        ## Создаем анимацию
        self.animation = animation.FuncAnimation(
            fig, self.update, frames=200, interval=50, blit=True)

        ## Устанавливаем анимацию как непрерывную
        self.paused = False

        ## Добавляем событие нажатия кнопки для переключения между паузой и работой
        fig.canvas.mpl_connect('button_press_event', self.toggle_pause)

    def toggle_pause(self, *args, **kwargs):
        ## Переключаемся между паузой и работой
        if self.paused:
            self.animation.resume()
        else:
            self.animation.pause()
        self.paused = not self.paused

    def update(self, i):
        ## Обновляем нормальное распределение
        self.n0 += i / 100 % 5
        self.p.set_ydata(self.n0 % 20)
        return (self.p,)

Создание объекта анимации

В этом шаге мы создадим объект класса PauseAnimation, который мы определили на шаге 2.

pa = PauseAnimation()

Показать анимацию

В этом шаге мы покажем анимацию, которую создали на шаге 2.

plt.show()

Резюме

В этом практическом занятии вы узнали, как создавать анимацию с использованием Matplotlib, а также как приостанавливать и возобновлять анимацию с помощью методов Animation.pause() и Animation.resume(). Вы также узнали, как создавать интерактивную анимацию, которая реагирует на ввод пользователя. С этими знаниями вы можете создавать собственные пользовательские анимации и добавлять в них интерактивность.