web-dev-qa-db-fra.com

Comment tracer des graphiques à barres dans gnuplot?

Comment tracer des graphiques à barres dans gnuplot avec des étiquettes de texte?

86
tatwright

Graphique à barres simple:

bar graph

set boxwidth 0.5
set style fill solid
plot "data.dat" using 1:3:xtic(2) with boxes

data.dat:

0 label       100
1 label2      450
2 "bar label" 75

Si vous voulez styler vos barres différemment, vous pouvez faire quelque chose comme:

multi color bar graph

set style line 1 lc rgb "red"
set style line 2 lc rgb "blue"

set style fill solid
set boxwidth 0.5

plot "data.dat" every ::0::0 using 1:3:xtic(2) with boxes ls 1, \
     "data.dat" every ::1::2 using 1:3:xtic(2) with boxes ls 2

Si vous voulez faire plusieurs barres pour chaque entrée:

data.dat:

0     5
0.5   6


1.5   3
2     7


3     8
3.5   1

gnuplot:

set xtics ("label" 0.25, "label2" 1.75, "bar label" 3.25,)

set boxwidth 0.5
set style fill solid

plot 'data.dat' every 2    using 1:2 with boxes ls 1,\
     'data.dat' every 2::1 using 1:2 with boxes ls 2

barchart_multi

Si vous voulez être difficile et utiliser quelques astuces gnuplot soignée:

Gnuplot a des colonnes en pseudo qui peuvent être utilisées comme index à colorier:

plot 'data.dat' using 1:2:0 with boxes lc variable

barchart_multi2

De plus, vous pouvez utiliser une fonction pour choisir les couleurs que vous voulez:

mycolor(x) = ((x*11244898) + 2851770)
plot 'data.dat' using 1:2:(mycolor($0)) with boxes lc rgb variable

barchart_multi3

Remarque: vous devrez ajouter quelques autres commandes de base pour obtenir le même effet que les exemples d'images.

107
Brad
 Tracez "data.dat" avec 2: xtic (1) avec histogramme 

Ici data.dat contient des données de la forme

 titre 1 
 titre2 3 
 "titre long" 5 
24
tatwright

Je recommande le script Perl du générateur de graphique à barres de Derek Bruening. Disponible à l'adresse suivante: http://www.burningcutlery.com/derek/bargraph/

13
JasonMc

Je voudrais juste développer la réponse principale, qui utilise GNUPlot pour créer un graphique à barres, pour les débutants absolus, parce que j'ai lu la réponse et que le déluge de syntaxe me troublait encore.

Nous commençons par écrire un fichier texte contenant les commandes GNUplot. Permet de l'appeler commands.txt:

 set term png

 set output "graph.png"

 set boxwidth 0.5

 set style fill solid

 plot "data.dat" using 1:3:xtic(2) with boxes

set term png définira GNUplot pour générer un fichier .png et set output "graph.png" est le nom du fichier vers lequel il sera généré.

Les deux lignes suivantes sont plutôt explicites. La cinquième ligne contient beaucoup de syntaxe. 

plot "data.dat" using 1:3:xtic(2) with boxes

"data.dat" est le fichier de données sur lequel nous opérons. 1:3 indique que nous utiliserons la colonne 1 de data.dat pour les coordonnées x et la colonne 3 de data.dat pour les coordonnées y. xtic() est une fonction responsable de la numérotation/étiquetage de l'axe des x. xtic(2) indique donc que nous utiliserons la colonne 2 de data.dat pour les libellés. 

"data.dat" ressemble à ceci:

 0 label       100

 1 label2      450

 2 "bar label" 75

Pour tracer le graphique, entrez gnuplot commands.txt dans le terminal. 

11
Marco Rosas

Vous pouvez directement utiliser les histogrammes de styles fournis par gnuplot. Ceci est un exemple si vous avez deux fichiers en sortie:

set style data histograms
 set style fill solid
 set boxwidth 0.5
 plot "file1.dat" using 5 title "Total1" lt rgb "#406090",\
      "file2.dat" using 5 title "Total2" lt rgb "#40FF00"
0
le vantard