2012-09-01 14 views
14

ist es möglich, die Farbe von Balken in einem Gnuplot-Skript dynamisch zu ändern? Ich habe das folgende SkriptGnuplot Farbe der Balken im Histogramm ändern

reset 
fontsize = 12 
set term postscript enhanced eps fontsize 
set output "bargraph_speedup.eps" 
set style fill solid 1.00 border 0 
set style histogram 
set style data histogram 
set xtics rotate by -45 
set grid ytics linestyle 1 
set xlabel "Benchmarks" font "bold" 
set ylabel "Relative execution time vs. reference implementation" font "bold" 
set datafile separator "," 
plot 'bm_speedup.dat' using 2:xtic(1) ti "Speedup" linecolor rgb "#00FF00" 

, die diese Handlung erzeugt:

Generated plot

Ist es möglich, die Farbe der Balken zu machen, die unter Null sind rot?

Danke,
Sven

+0

Vielleicht möchten Sie in 'rgb variable' schauen - fügen Sie eine dritte Spalte hinzu, die einen grünen" Linientyp "oder einen roten angibt, abhängig davon, ob der Wert positiv oder negativ ist. – mgilson

Antwort

8

können Sie dieses Verhalten imitieren die boxes Stil mit:

Meine Testdaten:

zip 2 
baz 2 
bar -1 
cat 4 
foo -3 

Und dann mit gnuplot Plotten:

set style line 1 lt 1 lc rgb "green" 
set style line 2 lt 1 lc rgb "red" 
set style fill solid 
plot 'test.dat' u (column(0)):2:(0.5):($2>0?1:2):xtic(1) w boxes lc variable 
#     #xval:ydata:boxwidth:color_index:xtic_labels 
+0

Scheint wie eine Lösung! –

2

scheint nicht, wie Histogramm Sie es tun können. Kann wie folgt sein:

set boxwidth 0.3 
f(v)=v<0?1:2 
plot 'bm_speedup.dat' using 0:2:(f($2)):xticlabels(1) with boxes ti "Speedup" lc variable 
3

Sie Ihre Datendatei in zwei Teile, positive Werte und negative spalten könnte, und zeichnen sie getrennt:

plot 'bm_speedup_pos.dat' using 2:xtic(1) ti "Faster" linecolor rgb "#00FF00", \ 
    'bm_speedup_neg.dat' using 2:xtic(1) ti "Slower" linecolor rgb "#FF0000" 

Oder, wenn Sie nur ein paar Diagramme zu erzeugen, müssen Ein paar Mal ist es eine übliche Technik, den Rohgraphen in gnuplot zu erzeugen und ihn dann in einem Bildbearbeitungsprogramm nachzuregeln, um die Farben anzupassen. Wenn Sie diesen Weg gehen, schlage ich vor, gnuplot den Graphen im SVG-Format zu erzeugen, was Ihnen viel bessere Graphiken als jedes der Bitmap-Formate bietet.

+0

Ich denke, ich werde versuchen, die Handlung nachzubearbeiten. Gute Idee, obwohl! –

2

Eigentlich können Sie auch Linecolor rgb Variable und geben Sie die Farbe so:

plot 'bm_speedup.dat' using 2:xtic(1):($2 >= 0 ? 0x00FF00 : 0xFF0000) ti Speedup lc rgb variable 
Verwandte Themen