2013-06-21 3 views
1

Я пытаюсь создать gui, который будет постоянно обновлять график matplotlib по мере сбора данных. Я хотел бы, чтобы заговор сохранял последние 5 точек данных и имел некоторое пустое пространство перед самой последней точкой данных.Как постоянно обновлять рисунок pyplot

Вот очень упрощенный вариант моего сценария, который показывает, где моя проблема:

import numpy as np 
import pylab 
import time 

pylab.ion() 

x1 = [0,1,2,3,4,5] 
x2 = [5,6,7,8,9,10] 

y1 = [5,6,7,8,7,8] 
y2 =[8,7,6,5,4,3] 

rate = 1 
timer = 0 
count = 0 

while count <2: 
    if timer == 0: 
     pylab.plot(x1,y1) 
     pylab.show() 
     timer += rate 
     count += 1 
     time.sleep(1) 
    else: 
     pylab.plot(x2,y2) 
     pylab.draw() 
     timer += rate 
     count += 1 
     time.sleep(1) 

Я уже пробовал использовать шоу (блок = False) и несколько других вещей. Есть ли способ заставить фигуру оставаться открытой, пока код продолжается, и команду, которую я могу использовать для ее обновления? Любые другие предложения будут высоко оценены.

+2

использовать 'plt.pause' вместо' time.sleep' take make sur e gui обновляется должным образом. – tacaswell

ответ

0

Следующая последовательность работала для меня ..

  • иона() - интерактивная
  • шоу()
  • участок()

графа обновления Do здесь как - участок() - draw() - вместо show()