2012-06-15 58 views
6

Estoy trazando algunas curvas de datos con gnuplot, y se ven así:líneas más gruesas en la leyenda de gnuplot

Plot with thin lines

Sin embargo, las muestras de línea en la leyenda son demasiado delgadas. Cuando tienes más curvas, es difícil distinguir los colores. Puede aumentar el grosor de las curvas usando "anchura de línea", por ejemplo, mediante la adición de "LW 3" a la orden de la trama, y ​​que le conseguir esto:

Plot with thick lines

Sin embargo, esto aumenta el grosor todas partes. ¿Es posible hacer que las líneas sean gruesas solo en la leyenda? Sé que se puede hacer "al revés", mediante el postprocesamiento en el archivo .png de salida. ¿Pero hay un enfoque directo, usando alguna configuración/magia de gnuplot?

Respuesta

5

Desafortunadamente, no conozco una manera de controlar el grosor de las líneas en la clave, ya que corresponden a las líneas que se dibujan. Puede ver lo que puede cambiar escribiendo help set key en gnuplot.

Usando multiplot, puede dibujar las líneas de la trama primero sin la clave, luego dibuje la clave nuevamente para 'líneas fantasmas'. Aquí está un ejemplo de código que haría que:

set terminal png color size 800,600 
set output 'plot.png' 

set multiplot 

unset key 

plot '../batteries/9v/carrefour.txt' w lp, \ 
    '../batteries/9v/philips.txt' w lp, \ 
    '../batteries/9v/sony.txt' w lp 

set key; unset tics; unset border; unset xlabel; unset ylabel 

plot [][0:1] 2 title 'Carrefour' lw 4, \ 
    2 title 'Philips' lw 4, \ 
    2 title 'Sony' lw 4 

En el segundo comando de trama, la función 2 (una constante) está siendo trazada con una y gama de 0 a 1, por lo que no se muestra.

+0

Guau, este es el genio :) ¡Nunca hubiera pensado en eso! Tuve que volver a trabajar un poco, ya que mi gnuplot no aceptó especificar el rango ([] [0: 1]) tres veces, solo una vez. Además, tuvo que deshacer xlabel/ylabel también para el segundo gráfico. ¡Pero aparte de eso, funcionó como un amuleto! ¡Gracias! – anrieff

+0

Gracias por las correcciones, no probé correctamente mi script antes de publicar :) – andyras

2

Me encontré con esta publicación y me dio una idea crítica. La solución provista no funciona en modo de multiplot, ya que el segundo comando de trazar disparará el segundo gráfico, que probablemente no sea el deseado. como solución alternativa, puede establecer los datos originales como "notitle", luego trazar los datos fuera del rango con el mismo tipo de línea y color en diferentes grosores con el título deseado. Dejaré mi ejemplo actual aquí. También incluye estilos de línea que he declarado. Así que solo uso el mismo estilo de línea (ls) para obtener el mismo color pero cambio el grosor en la segunda línea.

 # for pngs 
set terminal pngcairo size 1600,600 font ',18' enhanced 
set output "pic_multi_kenngr_ana.png 

set style line 2 lc rgb '#0ce90b' lt 1 lw 1.5 # --- green 
set style line 3 lc rgb '#09e0b3' lt 1 lw 1.5 #  . 
set style line 4 lc rgb '#065fd8' lt 1 lw 1.5 #  . 
set style line 5 lc rgb '#4e04cf' lt 1 lw 1.5 #  . 
set style line 6 lc rgb '#c702a9' lt 1 lw 1.5 #  . 
set style line 7 lc rgb '#bf000a' lt 1 lw 1.5 # --- red 

set multiplot layout 1,2 
set xtics rotate 
set tmargin 5 


set xtics 12 
set grid xtics 

# set axis labels 
set ylabel 'T [K]' 
set xlabel 'Zeit [h]' 

# select range 
set xrange [0:48] 
set yrange [290.15:306.15] 

set title "(a) Bodentemperatur" 
set key top right Right 

plot 'par_crank_hom01lvls.04.dat' u 1:3 with lines ls 7 notitle,\ 
     'par_crank_str01lvls.16.dat' u 1:3 with lines ls 2 notitle,\ 
     500 t 'z = 4 cm' ls 7 lw 4,\ 
     500 t 'z = 16 cm' ls 2 lw 4 


################################################ 

set title "(b) Bodenwärmestrom an der Oberfläche" 
set ylabel 'G [W m^{-2}]' 
set yrange[-110:110] 
unset key 

plot 'par_crank_str01_ghf.dat' u 1:3 with lines 


unset multiplot 

espero que esto ayude a alguien

0

Una solución alternativa aún más sencilla (en mi humilde opinión) es definir los colores de forma explícita y trazar cada línea dos veces, una vez con alta LW para la clave y también con el título para que aparezca en la clave, pero agregue "every :: 0 :: 0" que efectivamente termina en el trazado de nada, y una vez que la forma normal. Vea el siguiente fragmento de código:

plot data    u 0:1 w l linecolor rgb #1b9e77 lw 2 t "",\ 
    data every ::0::0 u 0:1 w l linecolor rgb #1b9e77 lw 4 t "Title" 
Cuestiones relacionadas