[Python-es] Matplotlib, generar gráfica en tiempo real.

Hiram Zúñiga hiramhzr en gmail.com
Jue Mayo 30 21:57:24 CEST 2013


On Thu, May 30, 2013 at 09:16:49AM +0200, Kiko wrote:
> El 30 de mayo de 2013 07:11, Hiram Zúñiga <hiramhzr en gmail.com> escribió:
> 
> > Hola lista,
> >
> > Estoy tratando de graficar un archivo csv en tiempo real, adjunto
> > los archivos para que se entienda mejor lo que explicare,
> >
> > Al correr el script generar.py(creo un archivo nuevo.csv), se generan
> > 100 registros con números aleatorios entre 1 y el 7, ahora al correr
> > graficacsv.py podemos observar que se genera correctamente la gráfica,
> > lo que quiero lograr ahora es que en lugar de esperar a que finalice
> > el poblado del archivo csv para mostrar la gráfica, quiero ver en tiempo
> > real como se va construyendo cada que se agrega un nuevo registro al
> > archivo,
> > agregue un retardo de 1 seg (linea 12: generar.py) para poder observar cada
> > que se agrega un nuevo registro, pero al
> > ejecutar graficacsv.py no muestra los datos que se van generando dentro
> > del archivo, simplemente me muestra una gráfica vacía,
> > por lo que tengo que matar el proceso de generar.py para poder ver la
> > gráfica.
> >
> 

Gracias ya puedo ver como se va poblando el archivo.

> Puedes hacer:
> 
> file.flush()
> 
> Para asegurarte que los datos se escriben en el fichero.
> 
> 
> >
> > Me imagino que todo puede ir por el lado de que al estar escribiendo el
> > archivo
> > (nuevo.csv)este se bloquea para ser leído, si es esto cierto, hay alguna
> > otra
> > forma de lograr lo que me propongo.
> >
> 
> No hay bloqueo del fichero.
> 
> 
> >
> > En resumen necesito ver los datos generados por generar.py en tiempo
> > real ejecutando graficacsv.py
> >
> 

Con que instrucción puedo actualizar las partes que van cambiando, podría
ser con fig.canvas.draw()?

> ¿Por qué lo haces en dos programas separados? No sería más sencillo hacerlo
> en el mismo proceso y actualizar solo las partes que van cambiando en lugar
> de leer todo el fichero csv para actualizar el gráfico.
> 
> 
> >
> > Espero me puedan orientar, desde ya muchas gracias a tod en s
> >
> 
> Échale un ojo a la API de animación que tiene Matplotlib. Puedes ver un
> ejemplo de como usarlo en:
> http://pybonacci.wordpress.com/2012/12/16/creando-una-animacion-con-matplotlib-y-ffmpeg/
> 
> También puedes ver más ejemplos de como usar matplotlib de forma
> interactiva en este tutorial de Jake Vanderplas:
> http://vimeo.com/63260224
> 
> 
> >
> > Adjunto(graficacsv.py, genear.py, nuevo.csv es generado automático)
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> >
> >

> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

Sigo con el mismo problema de ver en tiempo real la gráfica,
le estoy dando una vistazo a las ligas que me proporcionaste, 
muchas gracias.


Más información sobre la lista de distribución Python-es