Как динамически обновить график в цикле в записной книжке 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.

Ответы на вопрос(4)

Ваш ответ на вопрос