sábado, 8 de diciembre de 2012

Cosas de gnuplot, ejemplo práctico 3D

Hola a todos y todas!

Bueno, hoy pondré un script que uso para crear una figura en 3D con el magnifico, aspero y expléndido Gnuplot, y luego comentaré los distintos comandos que lo componen. Ya sabéis, no hay nada como enseñar con el ejemplo.

Los datos a representar los podeís encontrar en el siguiente enlace: Datos
El script en este otro enlace: Script
La fuente de letra que usaremos: Fuente

Veamos ahora las distintas líneas del script, tras cada una va su explicación:

set term png size 640,520 enhanced font "./FreeSans.ttf,9"
Indicamos a gnuplot que como salida use el terminal de tipo fichero png, de tamaño 640x520, y se usarán las fuentes enriquecidas señaladas, ubicada en el mismo directorio donde estamos trabajando.

set output "figuras_3d_X.png"
Indicamos el nombre del fichero de salida.

set xlabel "X"
set ylabel "Y"

Indicamos las etiquetas de los ejes X e Y. Si quieres poner etiqueta al eje Z usa ylabel.

set title "Curva de potencial del sistema H2+H2\nGeometria X"
Definimos el título de la figura.

set zrange[:2.0]
set yrange[0:]

Definimos los rangos de los ejes Z e Y. En el caso del eje Z indicamos que el rango inferior será automático (no ponemos nada) y el superior 2.0. Para el Y, el inferior es 0 y el superior automático. Si quieres definir ambos extremos puedes poner set yrange[0:10], por ejemplo. Si quieres indicar el rango del eje X has de usar xrange.

set xtics -2.5,1,2.5
set ztics -7,2,2

Configuramos los tics de los ejes X y Z, indicando rango inferior, intervalo y rango superior.

set hidden3d
Hacemos que la curva sea opaca, vamos que no se vea a través de ella.

set ticslevel 0.6
Elevamos la figura sobre la base para poder verla bien sin que la figura la tape, ya que en ella vamos a pintar las curvas de nivel de la superficie.

set cntrparam levels incr -7.5,0.5,2.0
set contour base

Configuramos las curvas de nivel indicando el rango inferior, el incremento y el rango superior. En la siguiente instrucción activamos las curvas de nivel en la base de la figura. Se pueden representar dichas lineas en la superficie en si poniendo set contour surface, o en la base y la superficie indicando set contour both.

unset key
Desactivamos las leyendas.

set view 60,110
Rotamos la figura para verla mejor. El primer parámetro es el giro en el eje X y el segundo en el eje Z, eso según la ayuda en línea, pero tengo mis dudas, así que probad.

splot './x.out' u 7:8:9 w l
Instrucción que realiza el dibujo en sí. Indicamos el nombre del fichero entre comillas simples, las columnas de dicho fichero a usar (de la 7 a la 9) y como realizar el dibujo, en este caso con líneas (w l).

set term X11
Volvemos a dejar el terminal de salida tal como estaba, por eso de dejar cada cosa en su sitio.

Bueno, espero os sea de utilidad este ejemplo. Por cierto, el resultado final es: