Matplotlib: Анимации

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))

Report Page