2010-12-29 6 views
2

Я новичок в Python, пытаюсь построить график на основе учебника pyODE, найденного here. Я использую pylab для построения графика. Ниже приведена основная часть кода, а #added представляет код, который я добавил, чтобы попытаться отобразить график. При просмотре самих значений y и v являются теми, которые меняются и x,z,u,w остаются 0.000. Когда я запускаю программу, масштаб оси продолжает масштабирование, подразумевая, что что-то происходит в отношении значений, но строка не отображается. Что я делаю не так?Графический график в python

Благодаря

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 

ответ

2

Хитрость заключается в том, чтобы аккумулировать все значения, которые вы хотите, чтобы построить первый, а затем просто вызвать plot один раз.

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 

Третий аргумент сюжет, 'r-', говорит pylab нарисовать красную линию, соединяющую точки, перечисленные в times, yvals. Когда вы набираете точки по одному, вы не можете указать pylab для подключения точек, потому что каждый сюжет содержит только одну точку. Вызов plot для каждой точки также очень неэффективен.

+0

Большое спасибо, это исправлено! – keyboardP

Смежные вопросы