Matplotlib avanzato

Animazioni con FuncAnimation

Anima un grafico fotogramma per fotogramma con FuncAnimation e salvalo come GIF.

Introduzione

Un'animazione è un grafico ridisegnato molte volte. FuncAnimation chiama la tua funzione update una volta per fotogramma; la funzione cambia i dati della linea esistente invece di disegnare un nuovo grafico, così resta veloce.

ax.plot restituisce una lista di linee e line, = prende l'unica. update(frame) riceve 0, 1, 2... e sposta un po' l'onda ogni volta con set_ydata. frames è il numero di fotogrammi e interval la pausa tra uno e l'altro in millisecondi. animation.save scrive una GIF con PillowWriter; nell'editor online la GIF compare nel tuo workspace e plt.show() mostra l'ultimo fotogramma.

Visualizzatore interattivo

Premi Play, trascina il cursore frame e cambia il numero di fotogrammi e l'intervallo. La riga evidenziata viene eseguita una volta per fotogramma.

Esempio Matplotlib eseguibile

Matplotlib
Esegui codice →
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()
Crea un pulsante Run per questo esempio Il grafico disegnato da questo codice
Animazioni con FuncAnimation