Matplotlib: Анимации
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter
# 1. Задаём ось X
x = np.linspace(0, 2 * np.pi, 400)
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2) # создаём пустой график
# 2. Настройка пределов осей
ax.set_xlim(0, 2 * np.pi)
ax.set_ylim(-1.2, 1.2)
# 3. Функция инициализации (очищает кадр)
def init():
line.set_data([], [])
return (line,)
# 4. Функция обновления кадра
def update(frame):
y = np.sin(x + frame) # сдвигаем фазу
line.set_data(x, y)
return (line,)
# 5. Создание анимации
ani = FuncAnimation(
fig, update,
frames=np.linspace(0, 2*np.pi, 128), # набор фаз
init_func=init,
blit=True
)
# 6. Сохраняем в GIF
ani.save('sine_wave.gif', writer=PillowWriter(fps=30))