2017-06-27 1 views
0

Il existe quelques instructions pour obtenir des lignes verticales dans gnuplot lors du traçage de fonctions. Comme en utilisant la fonction set arrow. J'ai besoin de cette fonctionnalité pour un histogramme et il s'avère que l'histogramme a une position différente de 0.0 sur l'axe X. Dans mon cas, les marqueurs d'axe X sont juste des chaînes du fichier de données.Ajout de lignes de repères verticaux dans gnuplot pour l'histogramme

Lors du tracé de l'histogramme, il serait tellement agréable d'avoir la moyenne, + -3sigma et peut-être le point X = 0 marqué par des lignes verticales de haut en bas de la parcelle en lignes pleines de couleur grasse.

Mon code d'histogramme:

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 

Mes données:

"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 

La fonction set arrow met la ligne au mauvais endroit.

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

Dans ces données

mean= 0.2743 
sigma= 0.7491 

Merci pour vos idées.

Gert

Répondre

0

J'ai trouvé que les barres d'histogramme définissent leurs propres coordonnées X comptage gauche à droite. Comme j'ai 22 lignes de données pour 22 barres d'histogramme ajoutant 11,0 à la position de ligne fait le travail.

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