08 July 2010

Generando gráficos con GnuPlot

GnuPlot es una herramienta disponible para linux, permite generar gráficos en formato eps (vectoriales) muy útiles para informes científicos.

Para instalar, hacemos en la consola: sudo apt-get install gnuplot

Para usarlo, generamos un script con las configuraciones de gnuplot y un archivo con los datos a plotear, por ejemplo, generamos un archivo con el nombre "gnu_script" (con cualquier editor de texto, no precisa extensión) con el contenido:

set terminal postscript eps enhanced 20
set encoding iso_8859_1
set output 'pot_-16_outdoor.eps'
set format x "%1.2f"
set xrange [0.20:2.05]
#set xtics 0.5
#set grid xtics
set xlabel 'Dist{\342}ncia (m)'
#set xlabel 'Imprecis{\343}o (% da dist{\342}ncia)'
set format y "%1.2f"
set yrange [-42:-23]
set grid ytics
set ytics 2.5
set ylabel 'RSSI (dBm)'
#set ylabel 'Erro de Localiza{\347}{\343}o (m)'

#set key left top
plot 0 with boxes notitle,\
'pot_-16_outdoor.dat' u 1:2:3 with errorlines pt 01 ps 1 lt 1 lw 3 lc rgb 'blue' title ''
#'pot_-16dbm.dat' u 1:2:3 with errorlines pt 05 ps 2 lt 1 lw 3 title 'Pot. -16dBm'



y generamos un archivo "pot_-16_outdoor.dat" con los datos a ser graficados:

# experimento con potencia de señal -16dbm
#columnas: distancia, media de potencia, intervalo de confianza
0.25 -25 0.09
0.5 -31.5 0.19
0.75 -34 0.14
1 -36 0.11
1.25 -40.5 0.11
1.5 -40.5 0.21
1.75 -40.5 0.17
2 -41.5 0.10


abrimos una consola, nos situamos en el directorio donde están los archivos y ejecutamos: $gnuplot gnu_sript
en el mismo directorio aparece un archivo con el nombre "pot_-16_outdoor.eps" que es el gráfico siguiente:

Ahora un ejemplo de gráfico de barras, en el script colocamos:

set output 'erro_rpe_graph.eps'
set encoding iso_8859_1
set terminal postscript color eps enhanced 20
set boxwidth 0.9 absolute #seta o gnuplot para plotar grafico de barras e diz qual deve ser a largura de cada barra
set style fill solid 0.85 border -1 #diz como deve ser a borda de cada barra
set style data histogram #seta que o grafico a ser plotado sera um grafico de barras
set style histogram cluster gap 1 #diz o quanto um grupo de barras estara distante dos grupos adjacentes
set yrange [0:0.8] #seta a altura do eixo y
set format y "%1.2f" #quantidade de decimales
set xrange [-0.6:2.5] #seta a largura do eixo x
set xtics("Cen{\341}rio 1" -0.01, "Cen{\341}rio 2" 1, "Cen{\341}rio 3" 2) #coloca uma string numa posição do eixo x, pode ser qualquer numero real do real do eixo x
set ylabel "Erro de Localiza{\347}{\343}o (m)" #titulo para o eixo vertical
#set xlabel "Cen{\341}rios RPE" #titulo para o eixo horizontal
#set style line 2 linecolor rgb 'green'
#set style line 1 linecolor rgb 'blue'
plot "error_rpe.dat" using 2 lc rgb "#040b1dff" notitle, "media_rpe.dat" using ($1):($2) with lines lt 5 lc rgb "blue" lw 2 title 'Erro de Localiza{\347}{\343}o M{\351}dio' #plota dois graficos de barras os valores para plotagem das barras estão no arquivo dados.t


Nota: cuidado con los comentarios que se pasaron para la liña de abajo.
En el scrip anterior el archico de salida es una gráfico con el nombre "erro_rpe_graph.eps" y el archivo de entrada en este caso son dos "error_rpe.dat" y "media_rpe.dat" cuyos contenidos son:

#error_rpe.dat
#cenarios erro media
1 0.12 0.34
2 0.23 0.34
3 0.69 0.34

y

#media_rpe.dat
-0.6 0.34
0 0.34
1 0.34
2.5 0.34


Resultado:

No comments: