Comment tracer un graphique à partir d'un fichier texte en utilisant gnuplot?


10

Comment tracer un graphique à partir des valeurs d'un fichier texte? Le fichier texte ressemble à ci-dessous:

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

Je veux tracer ces valeurs sous forme de graphique dans un script shell. Dans les valeurs de l'axe x de la colonne d'emplacement et les valeurs de l'axe y de la colonne count1 et count2.


L'évident plot "/tmp/temp.txt"échoue avec Bad data on line 1 of file /tmp/temp.txt. Je pense que vous devrez peut-être simplement créer une version du fichier avec juste des chiffres, pas d'en-têtes de ligne / colonne. Vous pouvez également utiliser quelque chose comme gnumeric.
barrycarter

Réponses:


9

Utiliser le même fichier d'entrée (ex.tsv) et créer un script gnuplot pour mieux contrôler les détails

set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col 

et gnuploter les données:

gnuplot -p ex.gnu < ex.tsv

nous voyons l'histogramme correspondant.

Pour créer un fichier png (à télécharger et afficher en SO), ajoutez 2 lignes supplémentaires:

set terminal pngcairo enhanced font "arial,10" fontscale 1.0 size 600, 400 
set output 'out.png'
set style data histogram 
set style fill solid border -1
plot for [i=2:3] '/dev/stdin' using i:xtic(1) title col

entrez la description de l'image ici


7

Solution de travail pour gnuplot v5.0:

Fichier de données d'entrée loc.dat:

location  count1    count2
HZ        100        193
ES        514        289
FP        70         137
BH        31         187

script gnuplotlocations.plt :

#!/usr/bin/gnuplot -persist

set title "Location data"
set xlabel "location"
set ylabel "count"
set grid
plot "loc.dat" u (column(0)):2:xtic(1) w l title "","loc.dat" u (column(0)):3:xtic(1) w l title ""

  • set title "Location data" - titre de l'intrigue principale

  • set xlabel "location"- étiquette de réglage pour l' xaxe

  • set ylabel "count"- étiquette de réglage pour l' yaxe

  • set grid - ajouter une grille à l'intrigue

  • (column(0)):2:xtic(1)- plage de colonnes, (column(0))- comme la 1ère colonne du fichier d'entrée a des valeurs non numériques, nous devons imiter la 1ère colonne numérique car gnuplot n'attend que des valeurs numériques

  • w l- signifie avec des lignes , pour joindre tous les points de données avec des lignes


Lancement interactif:

$ gnuplot
gnuplot> load "locations.plt"

Résultat rendu:

entrez la description de l'image ici


Je voulais juste mentionner, notez les guillemets autour de locations.plt dans la commande gnuplot> load "locations.plt", gnuplot exige que, load locations.pltne fonctionnera pas et vous obtiendrez une "erreur interne: l'opérateur STRING appliqué à une variable non définie ou non STRING" si vous l'oubliez.
HJR
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.