Середовище: Python 2.7, matplotlib 1.3, ноутбук IPython 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()
функція викликається, як і те, що виводиться оператором друку, про який я згадав вище, що добре працює). Тільки показ остаточної діаграми після того, як клітинка буде повністю виконана - це НЕ те, що я хочу.
Я навіть намагався явно додати функцію draw () після кожної plot()
тощо. Жодна з них не працює. Цікаво, як динамічно оновлювати графік за допомогою циклу for / while в одній комірці в блокноті IPython.