Matplotlib avancé

Animations avec FuncAnimation

Animez un graphique image par image avec FuncAnimation et enregistrez-le en GIF.

Introduction

Une animation est un graphique redessiné de nombreuses fois. FuncAnimation appelle votre fonction update une fois par image ; elle modifie les données de la ligne existante au lieu de redessiner un graphique, ce qui reste rapide.

ax.plot renvoie une liste de lignes, et line, = prend la seule. update(frame) reçoit 0, 1, 2... et décale un peu l'onde à chaque fois avec set_ydata. frames est le nombre d'images et interval le délai entre elles en millisecondes. animation.save écrit un GIF avec PillowWriter ; dans l'éditeur en ligne, le GIF apparaît dans votre espace de travail et plt.show() affiche la dernière image.

Visualiseur interactif

Appuyez sur Play, faites glisser le curseur frame et changez le nombre d'images et l'intervalle. La ligne surlignée s'exécute une fois par image.

Exemple Matplotlib exécutable

Matplotlib
Exécuter le code →
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()
Obtenir un bouton Run pour cet exemple Le graphique tracé par ce code
Animations avec FuncAnimation