Animation avec PyLab#
Vous découvrirez ici comment créer une animation avec PyLab et matplotlib.
Animation avec effacement#
Animation avec le module animation de matplotlib#
Le module animation est disponible à partir de la version 1.1 de Matplolib.
Nous allons utiliser la fonction FuncAnimation()
du module animation.
Dans notre script, nous allons définir une fonction init()
et une fonction animate()
.
La fonction init()
servira à créer l’arrière de l’animation qui sera présent sur chaque image.
La fonction animate()
met à jour la courbe pour chaque image.
from pylab import *
from matplotlib import animation
k = 2*pi
w = 2*pi
dt = 0.01
xmin = 0
xmax = 3
nbx = 100
x = linspace(xmin, xmax, nbx)
fig = figure() # initialise la figure
line, = plot([],[])
xlim(xmin, xmax)
ylim(-1,1)
# fonction à définir quand blit=True
# crée l'arrière de l'animation qui sera présent sur chaque image
def init():
line.set_data([],[])
return line,
def animate(i):
t = i * dt
y = cos(k*x - w*t)
line.set_data(x, y)
return line,
ani = animation.FuncAnimation(fig, animate, init_func=init, frames=100, blit=True, interval=20, repeat=False)
show()
La fonction FuncAnimation()
dispose d’un argument avec une étiquette appelée interval
, qui est le temps en millisecondes entre deux appels de la fonction de mise à jour, ici animate()
.
Animation sans le module animation#
Nous présentons ici la méthode qui était utilisée avant le développement du module animation.
from pylab import *
ion() # mode interaction on
x = linspace(0, 3, 100)
k = 2*pi
w = 2*pi
dt = 0.01
# courbe initiale
t = 0
y = cos(k*x - w*t)
line, = plot(x, y) # une reference a la courbe est mise dans line
# courbe en mouvement
for i in range(50):
t = t + dt
y = cos(k*x - w*t)
line.set_ydata(y) # modifie les valeurs de y
draw() # force le dessin de la figure
ioff() # mode interaction off
show()
Animation sans effacement#
from pylab import *
ion() # mode interaction on
x = linspace(0, 3, 100)
k = 2*pi
w = 2*pi
dt = 0.01
# courbe initiale
t = 0
y = cos(k*x - w*t)
line, = plot(x, y) # une reference a la courbe est mise dans line
# courbe en mouvement
for i in range(50):
t = t + dt
y = cos(k*x - w*t)
line.set_ydata(y) # modifie les valeurs de y
draw() # force le dessin de la figure
pause(0.05)
ioff() # mode interaction off
show()