Bonjour à tous et à toutes,
Le pb
il s'agit d'afficher progressivement en rouge 400 points sur 20 colonnes de 20 lignes. Malheureusement chaque colonne remplie s'efface quand l'autre commence, alors que je voudrais, qu'à la fin, le tableau n'ait que des points rouges.
Au départ je pensais que c'était parce que la Func Animation appelait la fonction animate(i) sur des intervalles de 1 à 20 puis recommençait et que la mise à jour du paramètre i 20X( 1à 20) entrainait la réinitialisation de l'image 20 fois.
J'ai donc appelé la fonction animate(i) par la fonction FuncAnimation sur un intervalle de 1 à 400 mais le résultat est le même. (ce qui m'a obligé pour les coordonnées des points à utiliser des modulo(20))
Une suggestion serait bienvenue
En vous remerciant de m'avoir consacré de votre temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
from numpy import *
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
 
def animate(i):
    global z
    balle.set_data(x[z],y[:i%20+1]) # permet à y de ne prendre que les valeurs de 1 à 20
                                    #  puisque i va de 1 à 400
 
    if i%20==19: #permet à x de changer de colonne
        z=z+1
    return balle,
 
z=0
 
x=linspace(1,20,20,dtype=int)
y=linspace(1,20,20,dtype=int)
a,b= meshgrid(x, y)
fig, ax = plt.subplots()
xmax = 21
xmin = 0
ymax = 21
ymin = 0
ax.set_xlim(xmin, xmax)
ax.set_ylim(ymin, ymax)
ax.set_aspect('equal')
scat=plt.scatter([a],[b],marker='.',c='white',edgecolors='black',s=300)
balle,=ax.plot([],[],'ro',ms=7)
 
sc =FuncAnimation(fig, animate, frames=linspace(0,399,400,dtype=int),
                           interval=10, blit=True, repeat=False)
plt.show()