Animaciones con FuncAnimation
Anima un gráfico fotograma a fotograma con FuncAnimation y guárdalo como GIF.
Introducción
Una animación es un gráfico que se redibuja muchas veces. FuncAnimation llama a tu función update una vez por fotograma; la función cambia los datos de la línea existente en lugar de dibujar un gráfico nuevo, y así va rápido.
ax.plot devuelve una lista de líneas y line, = toma la única. update(frame) recibe 0, 1, 2... y desplaza la onda un poco cada vez con set_ydata. frames es el número de fotogramas e interval la pausa entre ellos en milisegundos. animation.save escribe un GIF con PillowWriter; en el editor online el GIF aparece en tu espacio de trabajo y plt.show() muestra el último fotograma.
Visualizador interactivo
Pulsa Play, arrastra el control de frame y cambia el número de fotogramas y el intervalo. La línea resaltada se ejecuta una vez por fotograma.
Ejemplo de Matplotlib ejecutable
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()
