113 votes

Comment tracer des diagrammes à barres dans gnuplot ?

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

136voto

Brad Points 1004

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 styliser 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 rusé et utiliser des astuces de gnuplot :

Gnuplot possède des psuedo-colonnes qui peuvent être utilisées comme index pour la couleur :

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

barchart_multi2

En outre, 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 images d'exemple.

0 votes

Pour de nombreuses applications, il est plus pratique d'utiliser l'option histogram style de tracé, notamment pour le regroupement et l'empilement des valeurs.

0 votes

@Christoph Bonjour, Si je veux ajouter une clé pour ce type de graphique, que dois-je faire ? Par exemple, si je veux ajouter une clé qui dit que la ligne bleue est "hiver" et la ligne rouge est "été"

1 votes

@alex Je ne suis pas sûr de savoir lequel de ces exemples vous voulez dire : avec lc rgb variable vous ne pouvez pas avoir des entrées de clé différentes.

25voto

tatwright Points 1739
plot "data.dat" using 2: xtic(1) with histogram

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

title 1
title2 3
"long title" 5

20voto

Marco Rosas Points 394

Je voudrais juste développer la réponse la plus élevée, qui utilise GNUPlot pour créer un graphique à barres, pour les débutants absolus, car j'ai lu la réponse et j'étais encore confus à cause du déluge de syntaxe.

Nous commençons par écrire un fichier texte de commandes GNUplot. Appelons-le 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 configurera GNUplot pour qu'il produise un fichier .png et set output "graph.png" est le nom du fichier vers lequel la sortie sera effectuée.

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 allons utiliser 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 qui est responsable de la numérotation/l'étiquetage de l'axe des x. xtic(2) indique donc que nous allons utiliser la colonne 2 de data.dat pour les étiquettes.

"data.dat" ressemble à ça :

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

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

13voto

JasonMc Points 391

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

2voto

Vous pouvez utiliser directement les histogrammes de style fournis par gnuplot. Voici 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"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X