Ś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.
