Построение графа в питоне - PullRequest
2 голосов
/ 29 декабря 2010

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

Спасибо

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

1 Ответ

2 голосов
/ 29 декабря 2010

Хитрость заключается в том, чтобы сначала собрать все значения, которые вы хотите построить, а затем просто вызвать 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 для каждой точки также крайне неэффективен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...