Среда: 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.