Introduction
Matplotlib est une bibliothèque de visualisation de données utilisée pour créer des visualisations statiques, animées et interactives en Python. Dans ce laboratoire, nous allons apprendre à créer un tracé animé à l'aide de Matplotlib. Nous utiliserons la classe FuncAnimation pour créer une animation d'une onde sinusoïdale en décroissance.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet d'adresses pour accéder au carnet Jupyter pour la pratique.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Importation des bibliothèques
Tout d'abord, nous devons importer les bibliothèques nécessaires. Nous utiliserons Matplotlib et NumPy dans ce laboratoire.
import itertools
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.animation as animation
Créer la fonction génératrice de données
Ensuite, nous devons créer une fonction pour générer les données de l'animation. La fonction produira une onde sinusoïdale qui décroît au fil du temps. Nous utiliserons la fonction itertools.count() pour générer une séquence infinie de nombres. Nous utiliserons ces nombres pour calculer les valeurs de l'onde sinusoïdale.
def data_gen():
for cnt in itertools.count():
t = cnt / 10
yield t, np.sin(2*np.pi*t) * np.exp(-t/10.)
Préparer le tracé
Maintenant, nous devons préparer le tracé. Nous allons créer une figure et un objet d'axes à l'aide de la fonction subplots() de Matplotlib. Nous allons également créer un objet de ligne pour représenter l'onde sinusoïdale.
fig, ax = plt.subplots()
line, = ax.plot([], [], lw=2)
ax.grid()
xdata, ydata = [], []
Définir la fonction d'initialisation
Nous devons définir une fonction d'initialisation qui définira l'état initial du tracé. Dans cette fonction, nous définirons les limites de l'axe des y et effacerons les données de l'objet de ligne.
def init():
ax.set_ylim(-1.1, 1.1)
ax.set_xlim(0, 1)
del xdata[:]
del ydata[:]
line.set_data(xdata, ydata)
return line,
Définir la fonction d'animation
Maintenant, nous devons définir la fonction qui mettra à jour le tracé pour chaque trame de l'animation. Cette fonction prendra les données générées par la fonction data_gen() et mettra à jour le tracé avec les nouvelles données. Nous mettrons également à jour les limites de l'axe des x au fur et à mesure que l'animation progresse.
def run(data):
## update the data
t, y = data
xdata.append(t)
ydata.append(y)
xmin, xmax = ax.get_xlim()
if t >= xmax:
ax.set_xlim(xmin, 2*xmax)
ax.figure.canvas.draw()
line.set_data(xdata, ydata)
return line,
Créer l'animation
Enfin, nous pouvons créer l'animation à l'aide de la classe FuncAnimation. Nous passerons les paramètres fig, run, data_gen, init_func et interval pour créer l'animation. Nous définirons également le paramètre save_count sur 100 pour vous assurer que seules les 100 dernières trames sont enregistrées.
ani = animation.FuncAnimation(fig, run, data_gen, interval=100, init_func=init,
save_count=100)
Afficher le tracé
Nous pouvons maintenant afficher le tracé à l'aide de la fonction show() de Matplotlib.
plt.show()
Récapitulatif
Dans ce laboratoire, nous avons appris à créer un tracé animé à l'aide de Matplotlib. Nous avons utilisé la classe FuncAnimation pour créer une animation d'une onde sinusoïdale en décroissance. Nous avons également appris à configurer un tracé, à définir une fonction génératrice de données, à définir une fonction d'initialisation, à définir une fonction d'animation et à créer l'animation.