2012-02-17 14 views
8

¿Es posible crear gráficos dinámicos en Gnuplot? Lo que necesito para mis propósitos es que, como los datos se generan a través de un bucle, usaré gnuplot para poner un marcador en el eje x-y conservando los más antiguos. De alguna forma, podré observar la evolución de los datos en lugar de solo ver el resultado final del lote.Trazado dinámico en Gnuplot (dibujado en MATLAB)

Lo que quiero especialmente es equivalente al comando "dibujado" en MATLAB.

Aunque no estoy totalmente relacionado, en este momento estoy usando lisp común para generar los datos en un bucle y cgn para trazar dentro de lisp usando gnuplot. (Puedo trazar datos en forma de lotes dentro de lisp común usando cgn que utiliza gnuplot)

Muchas gracias de antemano por su atención.

editar: He escrito un código en el ceceo común para este propósito. Puede verificarlo aquí:
Plotting data sequentially from emacs using Common Lisp and Gnuplot
Sin embargo, este hilo es más general y solicita un trazado dinámico en gnuplot. Cualquier sugerencia es bienvenida.

+0

Siempre he usado file-IO para comunicarme desde lisp a MATLAB. Nunca obtuve una gran funcionalidad de visualización de lisp directamente. Estaré interesado en ver si alguien ofrece mejores soluciones aquí –

+0

@claytonstanley, ¿pueden consultar el enlace de arriba? También me gustaría ver su implementación de lisp-MATLAB, ya que hasta la fecha siempre he usado MATLAB para mis propósitos y si de alguna manera puedo dar comandos a MATLAB desde lisp, realmente me gustaría verlo. También puede enviarme un correo electrónico si lo desea. Muchas gracias por adelantado. – YBE

+0

Su enlace de arriba parece un gran comienzo. Mucho más dinámico que cualquier tipo de archivo-IO probablemente pueda atraparte. La solución file-IO que utilicé fue simplemente generar los datos para trazar en un archivo txt, y luego disparar un archivo m para trazar los datos en ese archivo. La ruta que va con cgn parece mucho mejor; y mantiene todo en común ceceo; No tengo ninguna experiencia con cgn, así que no puedo ayudar allí. Si realmente quieres usar Matlab para hacer el trazado, algún tipo de interfaz más dinámica entre lisp y Matlab es probablemente el camino correcto. ¿Sockets? Sé que Lisp los apoya bien; no estoy seguro de MLAB. –

Respuesta

0

No estoy seguro de que entiendo completamente lo que está preguntando, pero si está buscando agregar un diagrama a la última cadena que trazó (y está usando gnuplot 4.4), lo siguiente es el truco:

gnuplot> plot sin(x),cos(x) #plot sin and cos in an xterm window 
gnuplot> eval GPVAL_LAST_PLOT."cos(x+pi/2.5)" #add cos(x+pi/2.5) to the current plot 

de todos modos, no estoy seguro si eso es lo que está pidiendo que yo no uso de Matlab, pero espero que lo sea.

1

Desafortunadamente no es fácil trazar puntos individuales en gnuplot, pero afortunadamente hay algunos hacks simples como se discute aquí: Plotting a Single Point with Gnuplot. El método de eco discutido allí solo funcionará en un entorno Unix.

Utilizando esto con replot en lugar de plot en su programa, con suerte le dará un gráfico de los puntos que evolucionan con el tiempo que preserva los puntos anteriores.

Otra forma, que es lo que uso con python, es que pongo los puntos de datos en un archivo. En cada iteración, agrego puntos al archivo y trazo nuevamente con gnuplot. Es un poco feo, pero hace el trabajo en la mayoría de los casos.

+0

eso es lo que estoy haciendo en este momento. Con el ceceo común, agrego un único punto a un archivo de texto y luego lo trazo. El problema es, obviamente, a medida que el archivo de texto se hace más grande, el tiempo para trazar en cada paso de tiempo se vuelve más lento. – YBE

Cuestiones relacionadas