import matplotlib.pyplot  as plt
import numpy as np
from matplotlib import animation

#exemple de l'animation d'une OPPH
Nx=101 ; Nt=301 ; Lamb=10 ; Periode=0.01 ; L=3*Lamb # constantes
dx=L/(Nx) #pas spatial
dt=Periode/(Nt) #pas temporel
x=np.linspace(0,L,Nx)

f=np.zeros((Nx,Nt)) #création du tableau de la fonction f

for j in range(Nt):
    for i in range(Nx):
        f[i,j]=1.5*np.sin(2*np.pi*(j*dt/Periode-i*dx/Lamb))
    
fig = plt.figure() # initialise la figure
line, = plt.plot([],[]) 
plt.xlim(0,L)
plt.ylim(-2,2)
# fonction à définir quand blit=True
def init():
    line.set_data([],[])
    return line,
    
def animate(j): 
    y = f[:,j]
    line.set_data(x, y)
    return line,

ani = animation.FuncAnimation(fig, animate, init_func=init, frames=300, blit=True, interval=1)
plt.grid(b=True,color='r',linestyle='-')
plt.show()
