2014-01-31 5 views
0

Я хочу обновить несколько фигур, используя анимацию pylab. Я инициализировать новый рисунок для каждого канала для отображения, и я установить интерактивный режим выключен с помощью:Pylab анимация несколько цифр

pyplot.ion() 
    pyplot.show() 

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

def append_data(self, data): 
     update buffers with data 

     ... 
     ... 

     self.lineb.set_data(self.tbuf, self.bbuf) 
     self.ax1.set_xlim([min(self.tbuf), max(self.tbuf)]) 
     self.ax1.set_ylim([min(self.bbuf), max(self.bbuf)]) 

     ... 
     ... 

     self.fig.show() 
     pyplot.draw() 

Проблема: с несколькими фигурами только последняя обновляется правильно. Другие не обновляются. Я знаю, что данные правильно добавлены в буфер каждой фигуры, поэтому проблемы там нет.

+0

избегать использования 'pyplot', если вы действительно используете его в интерактивном режиме. 'fig.canvas.draw()' будет делать то же самое для определенной фигуры. – tacaswell

+0

Я не уверен, что понимаю ваше предложение. вы хотите избежать использования команды «pyplot» или модуля? что бы вы использовали вместо этого? – Fra

+0

Похоже, что вы встраиваете, цикл событий 'pyplot' может конфликтовать с циклом событий вашего gui. – tacaswell

ответ

0

Я нашел решение, соответствующее this article.

Я инициализируется фигуру с именем:

fig = pyplot.figure(name) 

, а затем я изменил строки:

self.fig.show() 
    pyplot.draw() 

в:

pyplot.figure(name) 
    pyplot.draw() 

Видимо это работает, не совсем уверен, почему ,

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