Анимации с 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
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()
