Matplotlib: продвинутый уровень

Анимации с FuncAnimation

Анимируйте график кадр за кадром с FuncAnimation и сохраните его в GIF.

Введение

Анимация - это график, перерисованный много раз. FuncAnimation вызывает вашу функцию update один раз на кадр; функция меняет данные существующей линии, а не рисует новый график, поэтому всё работает быстро.

ax.plot возвращает список линий, и line, = берёт единственную. update(frame) получает 0, 1, 2... и каждый раз немного сдвигает волну через set_ydata. frames - число кадров, interval - пауза между ними в миллисекундах. animation.save записывает GIF через PillowWriter; в онлайн-редакторе GIF появляется в рабочем пространстве, а plt.show() показывает последний кадр.

Интерактивный визуализатор

Нажмите Play, двигайте ползунок frame и меняйте число кадров и интервал. Подсвеченная строка выполняется один раз на кадр.

Запускаемый пример Matplotlib

Matplotlib
Запустить код →
main.py
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.animation import FuncAnimation, PillowWriter

x = np.linspace(0, 2 * np.pi, 200)
fig, ax = plt.subplots(figsize=(7, 4))
line, = ax.plot(x, np.sin(x))
ax.set_ylim(-1.2, 1.2)
ax.set_title("A moving wave")

def update(frame):
    line.set_ydata(np.sin(x + frame / 10))
    return line,

animation = FuncAnimation(fig, update, frames=60, interval=50)
animation.save("wave.gif", writer=PillowWriter(fps=20))
print("Saved wave.gif")
plt.show()
Получить кнопку запуска для этого примера График, который рисует этот код
Анимации с FuncAnimation