2017-06-27 2 views
0

Es gibt ein paar Anweisungen, um vertikale Linien in gnuplot zu erhalten, wenn Sie Funktionen plotten. Wie mit der set arrow Funktion. Ich brauche diese Funktionalität für ein Histogramm und es stellt sich heraus, dass das Histogramm eine andere Position von 0,0 auf der X-Achse hat. In meinem Fall sind die X-Achsenmarkierungen nur Zeichenfolgen aus der Datendatei.Hinzufügen von vertikalen Markierungslinien in gnuplot für das Histogramm

Beim Zeichnen des Histogramms wäre es so schön, den Mittelwert, + -3sigma und vielleicht den X = 0-Punkt durch vertikale Linien von oben nach unten in fetten, durchgezogenen Linien markiert zu haben.

Mein Histogramm Code:

set boxwidth 1.0 absolute 
set style line 1 lc rgb 'skyblue' 
set style fill solid border lt -1 
set style data histogram 
set style histogram clustered gap 0.0 
set xtics in rotate by 90 offset first +0.5,0 right 
set xlabel 
set ylabel 'Count' 
set terminal unknown 
plot 'histo.raw' using 3 
set title 'data' 
set yrange [0:GPVAL_DATA_Y_MAX*1.2] 
set term X11 
plot 'histo.raw' using 3:xtic(2) ls 1 title columnheader(1) 
set arrow 1 from 0.0,0.0 to 0.0,GPVAL_DATA_Y_MAX*1.2 nohead 

Meine Daten:

"data" 
    0 "-INF -> -5.0"  0 0.00 
    1 " -5.0 -> -4.5"  0 0.00 
    2 " -4.5 -> -4.0"  2 0.03 
    3 " -4.0 -> -3.5"  4 0.06 
    4 " -3.5 -> -3.0"  3 0.05 
    5 " -3.0 -> -2.5"  5 0.08 
    6 " -2.5 -> -2.0"  19 0.30 
    7 " -2.0 -> -1.5"  49 0.78 
    8 " -1.5 -> -1.0" 193 3.07 
    9 " -1.0 -> -0.5" 527 8.39 
    10 " -0.5 -> +0.0" 1289 20.53 
    11 " +0.0 -> +0.5" 1878 29.90 
    12 " +0.5 -> +1.0" 1411 22.47 
    13 " +1.0 -> +1.5" 636 10.13 
    14 " +1.5 -> +2.0" 178 2.83 
    15 " +2.0 -> +2.5"  56 0.89 
    16 " +2.5 -> +3.0"  17 0.27 
    17 " +3.0 -> +3.5"  9 0.14 
    18 " +3.5 -> +4.0"  4 0.06 
    19 " +4.0 -> +4.5"  0 0.00 
    20 " +4.5 -> +5.0"  0 0.00 
    21 " +5.0 -> +INF"  0 0.00 

Die set arrow Funktion setzt die Linie an der falschen Stelle.

set arrow 1 from 0.0,0.0 to 0.0,GPVAL_DATA_Y_MAX*1.2 nohead 

In diesen Daten

mean= 0.2743 
sigma= 0.7491 

Vielen Dank für Ihre Ideen.

Gert

Antwort

0

fand ich, dass die Histogrammbalken definieren eigene X-Koordinaten links nach rechts gezählt wird. Da ich 22 Datenzeilen für 22 Histogrammbalken habe, die 11.0 zur Zeilenposition hinzufügen, wird der Job ausgeführt.

set boxwidth 1.0 absolute 
set style line 1 lc rgb 'skyblue' 
set style fill solid border lt -1 
set style data histogram 
set style histogram clustered gap 0.0 
set xtics in rotate by 90 offset first +0.5,0 right 
set xlabel 
set ylabel 'Count' 
set terminal unknown 
plot 'histo.raw' using 3 
set title 'data' 
set yrange [0:GPVAL_DATA_Y_MAX*1.2] 
set terminal png size 1200,800 
set output 'histo.png' 
mean= +0.2743 
sdev= +0.7491 
lboffs= 0.2 
set arrow from 11.0 + mean,0.0 to 11.0 + mean ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "dark-green" 
set arrow from 11.0 + mean - 3 * sdev,0.0 to 11.0 + mean - 3 * sdev ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "red" 
set arrow from 11.0 + mean + 3 * sdev,0.0 to 11.0 + mean + 3 * sdev ,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "red" 
set arrow from 11.0,0.0 to 11.0,GPVAL_DATA_Y_MAX*1.2 nohead lw 2 lc rgb "blue" 
set label "Mean" at 11.0 + mean + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "dark-green" 
set label "+3%" at 11.0 + mean + 3 * sdev + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "red" 
set label "-3%" at 11.0 + mean - 3 * sdev + lboffs,GPVAL_DATA_Y_MAX*1.1 tc rgb "red" 
plot 'histo.raw' using 3:xtic(2) ls 1 title columnheader(1) 
set output 
set term X11 
Verwandte Themen