Среда: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome. Код находится в одной входной ячейке, используя --pylab=inline
Я хочу использовать ноутбук IPython и pandas для использования потока и динамического обновления графика каждые 5 секунд.
Когда я просто использую оператор печати для печати данных в текстовом формате, он отлично работает: выходная ячейка просто сохраняет данные печати и добавляет новые строки. Но когда я пытаюсь построить данные (а затем обновить их в цикле), сюжет никогда не появится в выходной ячейке. Но если я удалю цикл, просто зарисуйте его один раз. Он отлично работает.
Затем я сделал несколько простых тестов:
i = pd.date_range('2013-1-1',periods=100,freq='s')
while True:
plot(pd.Series(data=np.random.randn(100), index=i))
#pd.Series(data=np.random.randn(100), index=i).plot() also tried this one
time.sleep(5)
Выход ничего не покажет, пока я вручную не прерываю процесс (ctrl + m + i). И после того, как я прерываю его, график корректно отображается как несколько перекрывающихся строк. Но то, что я действительно хочу, - это сюжет, который появляется и обновляется каждые 5 секунд (или всякий раз, когда вызывается функция plot()
, как и то, что выдает вывод печати, упомянутый выше, что хорошо работает). Показывать только окончательный график после того, как ячейка полностью выполнена, НЕ является тем, что я хочу.
Я даже попытался явно добавить функцию draw() после каждого plot()
и т.д. Ни один из них не работает. Интересно, как динамически обновлять график с помощью цикла for/while в одной ячейке в ноутбуке IPython.