2012-06-15 14 views
6

sto complottando alcune curve di dati con gnuplot, e sembrano così:linee più spesse nella leggenda di gnuplot

Plot with thin lines

Tuttavia, i campioni di linea nella legenda sono troppo sottili. Quando hai più curve, diventa difficile distinguere i colori. È possibile aumentare lo spessore delle curve con "larghezza di riga", ad esempio, con l'aggiunta di "lw 3" al comando trama, e che ci si ottenere questo:

Plot with thick lines

Tuttavia, questo aumenta lo spessore ovunque. È possibile rendere le linee spesse solo nella legenda? So che si può fare "dall'altra parte", postprocessing sul file .png di output. Ma c'è un approccio diretto, usando alcune impostazioni/wizardry gnuplot?

risposta

5

Purtroppo, non so un modo per controllare lo spessore delle linee nella chiave, in quanto corrispondono alle linee in fase di elaborazione. Puoi vedere cosa puoi cambiare digitando help set key in gnuplot.

Utilizzando multiplo, è possibile disegnare le linee di trama prima senza la chiave, quindi disegnare nuovamente il tasto per 'linee fantasma'. Ecco un esempio di codice che farebbe che:

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 

Nel secondo comando plot, la funzione 2 (una costante) viene tracciata con una gamma di y 0 a 1, in modo che non si presenta.

+0

Wow, questo è genio :) Non ci avrei mai pensato! ho dovuto rielaborare un po ', dato che il mio gnuplot non ha accettato specificare l'intervallo ([] [0: 1]) per tre volte, solo una volta. Inoltre, ha dovuto disinserire xlabel/ylabel anche per la seconda trama. Ma a parte questo, ha funzionato come un fascino! Grazie! – anrieff

+0

Grazie per le correzioni, non ho testato correttamente il mio script prima di postare :) – andyras

2

mi sono imbattuto in questo post e mi ha dato un'idea critica. La soluzione fornita non funziona in modalità multiplot, dal momento che il secondo comando di stampa attiverà il secondo grafico, che molto probabilmente non è desiderato. come una soluzione si possono impostare i dati originali come "notitle", quindi tracciare i dati al di fuori della gamma con lo stesso tipo di linea e colore di spessore diverso con il titolo desiderato. Lascerò il mio esempio attuale qui. Include anche i linestyles che ho dichiarato. Quindi uso lo stesso linestyle (ls) per ottenere lo stesso colore ma cambiare lo spessore sulla seconda riga.

 # 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 

Spero che questo vi aiuterà qualcuno

0

ancora più semplice il lavoro-around (imho) è quello di definire i colori in modo esplicito e tracciare ogni linea due volte, una volta con alta LW per la chiave e anche con il titolo per apparire nella chiave, ma aggiungendo "ogni :: 0 :: 0" che effettivamente finisce nel tracciare nulla, e una volta nel modo normale. Vedere il seguente frammento di codice:

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"