Animationen mit FuncAnimation
Ein Diagramm Frame für Frame mit FuncAnimation animieren und als GIF speichern.
Einführung
Eine Animation ist ein Diagramm, das viele Male neu gezeichnet wird. FuncAnimation ruft deine update-Funktion einmal pro Frame auf; sie ändert die Daten der vorhandenen Linie, statt ein neues Diagramm zu zeichnen, und bleibt so schnell.
ax.plot gibt eine Liste von Linien zurück, und line, = nimmt die einzige. update(frame) erhält 0, 1, 2 ... und verschiebt die Welle jedes Mal ein wenig mit set_ydata. frames ist die Anzahl der Frames, interval die Pause dazwischen in Millisekunden. animation.save schreibt mit PillowWriter ein GIF; im Online-Editor erscheint das GIF in deinem Workspace, und plt.show() zeigt den letzten Frame.
Interaktive Visualisierung
Drücke Play, ziehe den frame-Regler und ändere Anzahl der Frames und das Intervall. Die hervorgehobene Zeile läuft einmal pro Frame.
Ausführbares Matplotlib-Beispiel
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()
