Entorno: Python 2.7, matplotlib 1.3, IPython notebook 1.1, linux, chrome. El código está en una sola celda de entrada, usando--pylab=inline
Quiero usar el cuaderno IPython y los pandas para consumir un flujo y actualizar dinámicamente un gráfico cada 5 segundos.
Cuando solo uso la declaración de impresión para imprimir los datos en formato de texto, funciona perfectamente bien: la celda de salida sigue imprimiendo datos y agregando nuevas filas. Pero cuando trato de trazar los datos (y luego actualizarlos en un bucle), la trama nunca aparece en la celda de salida. Pero si elimino el bucle, solo grábelo una vez. Funciona bien.
Luego hice una prueba simple:
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)
La salida no mostrará nada hasta que interrumpa manualmente el proceso (ctrl + m + i). Y después de que lo interrumpo, la trama se muestra correctamente como múltiples líneas superpuestas. Pero lo que realmente quiero es una trama que aparezca y se actualice cada 5 segundos (o cuando elplot()
que se llame a función, al igual que los resultados de la declaración de impresión que mencioné anteriormente, que funciona bien). Solo mostrar el gráfico final después de que la celda esté completamente hecha NO es lo que quiero.
Incluso intenté agregar explícitamente la función draw () después de cada plot()
, etc. Ninguno de ellos funciona. Me pregunto cómo actualizar dinámicamente un gráfico mediante un bucle for / while dentro de una celda en el cuaderno IPython.