Graphique dynamique

Le
Youri Ligotmi
Bonjour,

Je débute en Python. J'utilise la version 2.7.5 fournie avec la suite
Anaconda.
Pour faire du graphique j'utilise le module matplotlib.pyplot.
Ce que je voudrais faire et que je n'arrive pas à faire serait de
générer progressivement un graphe en fonction de résultats de calculs et
qu'on voit le graphe évoluer en temps réel.
Exemple avec un calcul de pi par monte-carlo, la figure apparaît en
blanc mais tant que le calcul n'est pas fini, rien n'est tracé :

import matplotlib.pyplot as plt
import numpy as np

#fonction aleatoire : renvoie un nombre compris entre a et b
def alea(a,b):
return (b-a)*random()+a

plt.axis([-1.5,1.5,-1.5,1.5])
# Tracé du cercle de rayon 1
x=np.linspace(0,2*np.pi,400)
plt.plot(np.sin(x),np.cos(x),color='b',label='Cercle')
# Tracé du carré de coté 2
plt.plot([1,1],[1,-1],linewidth=2.0,color='r')
plt.plot([1,-1],[-1,-1],linewidth=2.0,color='r')
plt.plot([-1,-1],[-1,1],linewidth=2.0,color='r')
plt.plot([-1,1],[1,1],linewidth=2.0,color='r')
plt.grid()
plt.show()
total = 50000
cont = 0
for i in range(1,total+1):
x=alea(-1,1)
y=alea(-1,1)
if (x**2+y**2)**0.5<=1:
cont = cont+1
plt.plot(x,y,'go')
plt.show()
else:
plt.plot(x,y,'bo')
plt.show()

print 4.*cont/total

Merci d'avance

YL
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas
Le #25842602
Le 04/12/2013 09:52, Youri Ligotmi a écrit :
Bonjour,

Je débute en Python. J'utilise la version 2.7.5 fournie avec la suite
Anaconda.
Pour faire du graphique j'utilise le module matplotlib.pyplot.
Ce que je voudrais faire et que je n'arrive pas à faire serait de
générer progressivement un graphe en fonction de résultats de calculs et
qu'on voit le graphe évoluer en temps réel.
Exemple avec un calcul de pi par monte-carlo, la figure apparaît en
blanc mais tant que le calcul n'est pas fini, rien n'est tracé :

import matplotlib.pyplot as plt
import numpy as np

#fonction aleatoire : renvoie un nombre compris entre a et b
def alea(a,b):
return (b-a)*random()+a

plt.axis([-1.5,1.5,-1.5,1.5])
# Tracé du cercle de rayon 1
x=np.linspace(0,2*np.pi,400)
plt.plot(np.sin(x),np.cos(x),color='b',label='Cercle')
# Tracé du carré de coté 2
plt.plot([1,1],[1,-1],linewidth=2.0,color='r')
plt.plot([1,-1],[-1,-1],linewidth=2.0,color='r')
plt.plot([-1,-1],[-1,1],linewidth=2.0,color='r')
plt.plot([-1,1],[1,1],linewidth=2.0,color='r')
plt.grid()
plt.show()
total = 50000
cont = 0
for i in range(1,total+1):
x=alea(-1,1)
y=alea(-1,1)
if (x**2+y**2)**0.5<=1:
cont = cont+1
plt.plot(x,y,'go')
plt.show()
else:
plt.plot(x,y,'bo')
plt.show()

print 4.*cont/total

Merci d'avance

YL


Essaie en multi thread. Un thread pour les calculs et un thread pour
l'affichage.
Damien Wyart
Le #25842752
* Youri Ligotmi
Je débute en Python. J'utilise la version 2.7.5 fournie avec la suite
Anaconda. Pour faire du graphique j'utilise le module
matplotlib.pyplot.



Pyqtgraph serait peut-être plus adapté pour des graphiques qui doivent
apparaître progressivement. On peut trouver des informations sur la page
suivante :
http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.PYQTLABGraphMath

--
DW
Laurent Pointal
Le #25848232
Youri Ligotmi wrote:

Bonjour,

Je débute en Python. J'utilise la version 2.7.5 fournie avec la suite
Anaconda.
Pour faire du graphique j'utilise le module matplotlib.pyplot.
Ce que je voudrais faire et que je n'arrive pas à faire serait de
générer progressivement un graphe en fonction de résultats de calculs et
qu'on voit le graphe évoluer en temps réel.
Exemple avec un calcul de pi par monte-carlo, la figure apparaît en
blanc mais tant que le calcul n'est pas fini, rien n'est tracé :



<zip>

Voir les pistes ci-dessous

http://stackoverflow.com/questions/11874767/real-time-plotting-in-while-loop-with-matplotlib

<zip>

A+

--
Laurent POINTAL -
Youri Ligotmi
Le #25849852
Merci à vous 3. Je compile, je teste et je viendrai vous dire ce qu'il
en est du résultat (mais il faudra me laisser un peu de temps je suis un
peu charrette).
Publicité
Poster une réponse
Anonyme