Środowisko: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome. Kod znajduje się w jednej komórce wejściowej, używając--pylab=inline
Chcę używać notatnika IPython i pand, aby zużywać strumień i dynamicznie aktualizować wykres co 5 sekund.
Kiedy po prostu używam instrukcji print do drukowania danych w formacie tekstowym, działa to doskonale: komórka wyjściowa po prostu drukuje dane i dodaje nowe wiersze. Ale kiedy próbuję wykreślić dane (a następnie zaktualizować je w pętli), wykres nigdy nie pojawia się w komórce wyjściowej. Ale jeśli usunę pętlę, po prostu wykreśl ją raz. To działa dobrze.
Następnie zrobiłem prosty test:
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)
Wyjście nie pokaże niczego, dopóki ręcznie nie przerwę procesu (ctrl + m + i). Po przerwaniu wykres jest wyświetlany poprawnie jako wiele nakładających się linii. Ale to, czego naprawdę chcę, to wykres, który pojawia się i jest aktualizowany co 5 sekund (lub za każdym razem, gdy plot()
funkcja zostanie wywołana, tak jak to, co wypisuje instrukcja print, o której wspomniałem powyżej, która działa dobrze). Tylko pokazanie ostatecznego wykresu po całkowitym zakończeniu komórki NIE jest tym, czego chcę.
Próbowałem nawet jawnie dodać funkcję draw () po każdym plot()
itd. Żadna z nich nie działa. Zastanawiam się, jak dynamicznie aktualizować wykres za pomocą pętli for / while w jednej komórce w notatniku IPython.