2010-12-29 4 views
2

Je suis nouveau sur Python, j'essaie de tracer un graphique basé sur le tutoriel pyODE trouvé here. J'utilise pylab pour le traçage. Voici la partie principale du code et #added représente le code que j'ai ajouté afin d'essayer d'afficher le graphique. Lorsque vous regardez les valeurs elles-mêmes, y et v sont celles qui changent et x,z,u,w restent 0.000. Lorsque j'exécute le programme, l'échelle de l'axe continue à évoluer, ce qui implique qu'il se passe quelque chose en ce qui concerne les valeurs, mais aucune ligne n'est affichée. Qu'est-ce que je fais mal?Tracer un graphique en python

Merci

yplot = 0 #added 

#do the simulation 
total_time = 0.0 
dt = 0.04 
while total_time<2.0: 
    x,y,z = body.getPosition() 
    u,v,w = body.getLinearVel() 
    print "%1.2fsec: pos=(%6.3f,%6.3f,%6.3f) vel=(%6.3f,%6.3f,%6.3f)" % \ 
     (total_time, x,y,z,u,v,w) 
    world.step(dt) 
    total_time += dt  
    yplot += y #added 
    plot(total_time, yplot) #added 


xlabel('Time') #added 
ylabel('Height') #added 
show() #added 

Répondre

2

L'astuce consiste à accumuler toutes les valeurs que vous voulez tracer d'abord, puis il suffit d'appeler plot une fois.

yplot = 0 #added 

#do the simulation 
total_time = 0.0 
dt = 0.04 
times=[] 
yvals=[] 
while total_time<2.0: 
    x,y,z = body.getPosition() 
    u,v,w = body.getLinearVel() 
    print "%1.2fsec: pos=(%6.3f,%6.3f,%6.3f) vel=(%6.3f,%6.3f,%6.3f)" % \ 
     (total_time, x,y,z,u,v,w) 
    world.step(dt) 
    total_time += dt 
    yplot += y 
    times.append(total_time) 
    yvals.append(yplot) 
plot(times, yvals,'r-') 
xlabel('Time') #added 
ylabel('Height') #added 
show() #added 

Le troisième argument de tracer, 'r-', dit pylab de tracer une ligne rouge reliant les points mentionnés dans times, yvals. Lorsque vous tracez des points un à la fois, il n'y a aucun moyen de dire pylab pour connecter les points car chaque tracé ne contient qu'un seul point. Appeler plot pour chaque point est également très inefficace.

+0

Merci beaucoup, c'est réglé! – keyboardP

Questions connexes