Histogramme numérique de l'axe des x dans gnuplot?
Je vais avoir ce fichier en tant que data.dat
:
Xstep Y1 Y2 Y3 Y4
332 1.22 0.00 0.00 1.43
336 5.95 12.03 6.11 10.41
340 81.05 81.82 81.92 81.05
394 11.76 6.16 10.46 5.87
398 0.00 0.00 1.51 1.25
1036 0.03 0.00 0.00 0.00
Je peux tracer ces données d'histogramme avec ce script, hist-v1.gplot
(à l'aide de set style data histogram
):
set xlabel "X values"
set ylabel "Occurence"
set style data histogram
set style histogram cluster gap 1
set style fill solid border -1
set term png
set output 'hist-v1.png'
set boxwidth 0.9
# attempt to set xtics so they are positioned numerically on x axis:
set xtics ("332" 332, "336" 336, "340" 340, "394" 394, "398" 398, "1036" 1036)
# ti col reads the first entry of the column, uses it as title name
plot 'data.dat' using 2:xtic(1) ti col, '' u 3 ti col, '' u 4 ti col, '' u 5 ti col
Et en appelant:
gnuplot hist-v1.gplot && eog hist-v1.png
cette image est générée:
image hist-v1.png http://img202.imageshack.us/img202/3974/histv1.png
Cependant, vous pouvez remarquer que l'axe X n'est pas mis à l'échelle numériquement - il comprend les valeurs de X comme des catégories (c'est à dire qu'il est une catégorie de l'axe).
Je peux obtenir une plus numérique de l'axe X avec le script suivant, hist-v2.gplot
(à l'aide de with boxes
):
set xlabel "X values"
set ylabel "Occurence"
# in this case, histogram commands have no effect
set style data histogram
set style histogram cluster gap 1
set style fill solid border -1
set term png
set output 'hist-v2.png'
set boxwidth 0.9
set xr [330:400]
# here, setting xtics makes them positioned numerically on x axis:
set xtics ("332" 332, "336" 336, "340" 340, "394" 394, "398" 398, "1036" 1036)
# 1:2 will ONLY work with proper xr; since we have x>300; xr[0:10] generates "points y value undefined"!
plot 'data.dat' using 1:2 ti col smooth frequency with boxes, '' u 1:3 ti col smooth frequency with boxes
Et en appelant:
gnuplot hist-v2.gplot && eog hist-v2.png
cette image est générée:
image hist-v2.png http://img266.imageshack.us/img266/6717/histv2.png
Malheureusement, les bars se "superposer" ici, de sorte qu'il est difficile de lire le graphique.
Est-il un moyen de garder le numérique à l'échelle de l'axe X comme dans hist-v2.png
, mais garder les "bars" côte à côte comme à l' hist-v1.png
? Ce fil de discussion, "Re: Histogramme avec l'axe x erreur de date", indique vous ne pouvez pas:
Mais il sera difficile de tirer la coordonnée x de la date du fichier de données, ...
mais ensuite, il se réfère à un autre problème...
Merci,
Cheers!
OriginalL'auteur sdaau | 2010-08-07
Vous devez vous connecter pour publier un commentaire.
Ok, après la lecture de la
gnuplot
de l'aide pour un peu, il semble que l'histogramme de style "toujours" interpréter l'axe x de façon séquentielle entrées/catégories - donc en effet, il semble y avoir aucun moyen d'obtenir un numéro d'axe à l'aide d'un histogramme de style.Cependant, il s'avère que
$
peut faire référence à une colonne, et ceux qui peuvent être utilisés à fait "repositionner" la bars dans le deuxième (frequency with boxes
style) exemple; alors, avec ce codehist-v2b.gplot
:Et en appelant:
cette image est générée:
image hist-v2b.png http://img823.imageshack.us/img823/805/histv2b.png
... qui est à peu près ce que je voulais en premier lieu.
Juste une petite remarque - j'ai d'abord voulu utiliser le script avec des données en ligne; pour une telle configuration, il devrait être écrit comme
... qui est, les données doivent être saisies à plusieurs reprises, à mesure qu'il arrive à partir de stdin - ce problème est discuté dans gnuplot - faire de plusieurs parcelles de fichier de données avec commandes intégrées.
Cheers!
PS: Comme il y a un peu d'espace sur le schéma, ce serait bien si nous pouvions nous en préciser distinct de l'axe des x des plages; ce qui est abordé dans:
OriginalL'auteur sdaau
Réglage de la largeur de la zone de correctement est très important lorsque vous tracer un histogramme à l'aide de "boîtes" de styles de tracé. Dans un de mes article de blog, j'ai parlé. Si aucun intérêt,cliquez sur ici!
OriginalL'auteur hsxz