Bonjour,
Je suis novice en python (donc je pose des questions bêtes...), j'ai donc cherché sur les doc python, et notamment sur maplotlib et sa gallery (http://matplotlib.org/gallery/index.html) je trouve des cas mais pas vraiment une solution applicable à mon cas.
Voilà, j'ai une matrice contenant des entiers de 0 à 9 par exemple.
Je voudrais afficher ces données dans une image via des cercles. La couleur de chaque cercle dépendant de la valeur lue dans ma matrice.
Des modifications sont faites sur les données de la matrice et je fais varier les couleurs des cercles.
Après chaque modification des données de la matrice, je fais afficher mon image avec les cercles dont les couleurs ont varié par rapport à l'image précédente.
Pour passer d'une image à l'autre, je suis obligé de fermer la fenêtre affichant l'image.
Cela fonctionne mais ....(il y en a un c'est normal).
Je voudrais que mes affichages soient successifs, c'est à dire sans que je doivent fermer la fenêtre pour passer à l'affichage suivant. Sur Maplotlib, il y a des exemples d'animations et j'ai presque réussi mais j'ai un fond de couleur selon la valeur de la matrice alors que je voudrais un fond blanc mais le blanc n'existe pas ....
Je suis en python 3.5.1 et j'utilise la bibliothèque maplotlib
Pour le cas statique, c'est à dire fermeture de la fenêtre pour passer à l'affichage suivant, j'ai fait :
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 affichage = ones((10,10,3)) taillecercle = 10 couleur = 0 couleur1 = 0 couleur2 = 0 for cycle in range(0,2): for i in range(0,10): for j in range(0,10): cercle = plot([j], [i], "wo") setp(cercle, 'markersize', taillecercle) if cycle == 00: couleur = i/10 couleur1 = j/10 couleur2 = 0.1 else: couleur = j/10 couleur1 = i/10 couleur2 = 0.1 setp(cercle, 'markerfacecolor',(couleur1,couleur,couleur2)) imshow(affichage) show()
Pour ajouter une animation, j'ai fait :
Mais le fond est foncé alors que j'en veux un blanc et en plus, il doit me manquer un truc de fin car l'image est ensuite bloquée. Je dois interrompre le programme.
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 affichage1 = ones((10,10,3)) p = imshow(affichage1) taillecercle = 10 couleur = 0 couleur1 = 0 couleur2 = 0 p = imshow(affichage1) for cycle in range(0,2): for i in range(0,10): for j in range(0,10): cercle = plot([j], [i], "wo") setp(cercle, 'markersize', taillecercle) if cycle == 00: couleur = i/10 couleur1 = j/10 couleur2 = 0.1 else: couleur = j/10 couleur1 = i/10 couleur2 = 0.1 setp(cercle, 'markerfacecolor',(couleur1,couleur,couleur2)) p.set_data(affichage1) pause(0.5)
Quelqu'un aurait-il une solution à mon problème ? Une reco pour obtenir ce que je veux ?
L'idéal étant donc : affichage de mon image avec des cercles positionnés selon des coordonnées x,y et avec la couleur que je veux, mise à jour de la couleur des cercles selon ce que je veux et cela N fois.
L'optimum serait, une fois les N cycles réalisés, de pouvoir naviguer d'avant en arrière pour afficher l'image d'un cycle. Une possibilité serait d'enregistrer les images dans des fichiers et de revoir les fichiers mais pas très propre.
Bon ben merci des conseils....
Partager