Comment tracer des diagrammes à barres dans gnuplot avec des étiquettes de texte ?
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.
Comment tracer des diagrammes à barres dans gnuplot avec des étiquettes de texte ?
Graphique à barres simple :
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 :
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
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
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
Remarque : vous devrez ajouter quelques autres commandes de base pour obtenir le même effet que les images d'exemple.
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.
@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é"
@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.
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.
Je recommande le générateur de graphique à barres Perl script de Derek Bruening. Disponible à l'adresse http://www.burningcutlery.com/derek/bargraph/
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 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.