2012-06-15 12 views
6

ich einige Datenkurven mit gnuplot Plotten, und sie sehen wie folgt aus:Dickere Linien in der Legende von gnuplot

Plot with thin lines

jedoch die Linienproben in der Legende sind zu dünn. Wenn Sie mehr Kurven haben, wird es schwierig, die Farben zu unterscheiden. Sie können die Dicke der Kurven erhöhen „Linienbreite“ verwendet wird, beispielsweise durch „lw 3“ auf dem Grundstück Befehl hinzufügen, und Sie würden erhalten diese:

Plot with thick lines

Dies ist jedoch die Dicke erhöht überall. Ist es möglich, die Linien nur in der Legende dick zu machen? Ich weiß, dass es "andersherum" gemacht werden kann, indem man die .png-Datei nachbearbeitet. Aber gibt es einen direkten Ansatz, mit einigen gnuplot Einstellung/Zauberei?

Antwort

5

Leider weiß ich nicht einen Weg, um die Dicke der Linien in dem Schlüssel zu steuern, da sie mit den Linien entsprechen gezogen werden. Sie können sehen, was Sie ändern können, indem Sie in gnuplot help set key eingeben.

Multiplot verwenden, können Sie die Plot-Linien zeichnen zunächst ohne den Schlüssel, dann den Schlüssel ziehen wieder für ‚Geisterlinien‘. Hier ist ein Code-Beispiel, die das tun würde:

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 

Im zweiten Plotbefehl die Funktion 2 (eine Konstante) wird mit einem Y-Bereich von 0 bis 1, aufgetragen, so dass es nicht angezeigt.

+0

Wow, das ist genial :) Das hätte ich nie gedacht! Ich musste es ein wenig nachbearbeiten, da mein Gnuplot den Bereich ([] [0: 1]) dreimal nur einmal akzeptiert hat. Außerdem musste xlabel/ylabel für den zweiten Plot ebenfalls deaktiviert werden. Aber anders als das, es funktionierte wie ein Zauber! Vielen Dank! – anrieff

+0

Danke für die Korrekturen, ich habe mein Skript vor dem Posten nicht richtig getestet :) – andyras

2

ich auf diesen Beitrag lief und es gab mir eine kritische Idee. Die bereitgestellte Lösung funktioniert nicht in Multiplot Modus fließen, da die zweite Plotbefehl die zweite Handlung auslösen, die die meisten wahrscheinlich nicht erwünscht. als Behelfslösung kann man die Originaldaten als „notitle“ gesetzt ist, dann werden die Daten mit der gleichen Linientyp und Farbe in unterschiedlicher Dicke mit dem gewünschten Titel außerhalb des Bereichs plotten. Ich werde mein aktuelles Beispiel hier lassen. Es enthält auch Linienstile, die ich deklariert habe. Also benutze ich den gleichen Linienstyle (ls), um die gleiche Farbe zu erhalten, aber ändere die Dicke in der zweiten Zeile.

 # 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 

Ich hoffe, das jemand helfen

0

Eine noch einfachere Behelfslösung (imho) die Farben explizit zu definieren und zeichnet jede Zeile zweimal, einmal mit hohem lw für den Schlüssel und auch mit der Titel, der im Schlüssel erscheinen soll, aber "jeder :: 0 :: 0" hinzufügt, der effektiv endet, wenn nichts gezeichnet wird, und einmal der normale Weg. Siehe folgendes Code-Snippet:

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"