Как динамически обновить график в цикле в записной книжке ipython (в пределах одной ячейки)
Среда: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome. Код находится в одной входной ячейке, используя--pylab=inline
Я хочу использовать блокнот IPython и панды, чтобы использовать поток и динамически обновлять график каждые 5 секунд.
Когда я просто использую оператор print для печати данных в текстовом формате, он отлично работает: выходная ячейка просто сохраняет данные печати и добавляет новые строки. Но когда я пытаюсь построить данные (а затем обновить их в цикле), график никогда не отображается в выходной ячейке. Но если я уберу петлю, просто нарисуй ее один раз. Работает нормально.
Затем я сделал несколько простых тестов:
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()
функция вызывается так же, как то, что выводит оператор print, о котором я упоминал выше, что хорошо работает). Только показ окончательного графика после того, как ячейка полностью сделана, это НЕ то, что я хочу.
Я даже пытался явно добавить функцию draw () после каждогоplot()
и т.д. Ни один из них не работает. Хотите знать, как динамически обновлять график с помощью цикла for / while внутри одной ячейки в записной книжке IPython.