Introduction

Dans ce court tutoriel je vais vous montrer comment animer le tracé d'une fonction à l'aide de Python et de Matplotlib. Avant toute chose je vous conseille de vous familiariser avec le tracé de fonctions simples. Vous trouverez des exemples détaillés et fournis dans cette documentation :

Site de Matplotlib

C'est bon vous êtes capables de tracer cette fonction : ? Alors on peut passer à l'animation !

Animation

Je vais maintenant vous détailler le code qui permet de produire l'animation que vous voyez sur la vidéo ci-dessus.

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation,FFMpegFileWriter

Importation classique des modules et fonctions dont on a besoin.

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = plt.plot([], [], 'r', animated=True)
f = np.linspace(-3, 3, 200)

On créé une figure et des axes et on initialise le tracé.
On créé également un array numpy f qui va contenir les frames pour lesquelles on veut calculer une image. Vous verrez ça s'éclaircira par la suite.

def init():
    ax.set_xlim(-3, 3)
    ax.set_ylim(-0.25, 2)
    ln.set_data(xdata,ydata)
    return ln,

Fonction d'initialisation des données.
Grâce à set_ylim et set_xlim on donne à matplotlib quelles sont nos limites de fenêtre.

def update(frame):
    xdata.append(frame)
    ydata.append(np.exp(-frame**2))
    ln.set_data(xdata, ydata)
    return ln,

La fonction update va actualiser, comme son nom l'indique les valeurs. Ici on se sert de la méthode .append() pour ajouter une valeur à xdata et ydata.

ani = FuncAnimation(fig, update, frames=f, init_func=init, blit=True, interval = 2.5,repeat=False)
plt.show()

On anime enfin tout notre bazar.
fig c'est la figure dans laquelle l'animation va être tracée.
update correspond à l'appel par tous les éléments de frames de la fonction update.
blit=True permet de ne pas tout recalculer à chaque fois.
interval correspond à l'interval de temps entre 2 images.
repeat=False indique que l'on ne veut pas que l'animation se répète

mywriter = FFMpegFileWriter(fps=25,codec="libx264")
ani.save("test.mp4", writer=mywriter)

Enfin il vous est possible de sauvegarder cette animation sous forme de vidéo. Pour celà il est nécessaire d'installer ffmpeg, mais ça c'est l'objet d'un autre tutoriel en cas de grosse demande ;).

Conclusion

Vous pouvez télécharger le fichier source ici : animation.py
Vous avez maintenant appris à créer des animations simples à l'aide de Python et de Matplotlib.