Wie zeichne ich Diagramme aus einer Textdatei mit gnuplot?


10

Wie zeichne ich ein Diagramm aus Textdateiwerten? Die Textdatei sieht wie folgt aus:

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

Ich möchte diese Werte als Diagramm in einem Shell-Skript darstellen. In x-Achsenwerten der Positionsspalte und y-Achsenwerte der Spalten count1 und count2.


Das Offensichtliche plot "/tmp/temp.txt"scheitert mit Bad data on line 1 of file /tmp/temp.txt. Ich denke, Sie müssen möglicherweise nur eine Version der Datei mit nur Zahlen und keinen Zeilen- / Spaltenüberschriften erstellen. Alternativ können Sie auch etwas wie gnumerisch verwenden.
Barrycarter

Antworten:


9

Verwenden Sie dieselbe Eingabedatei (ex.tsv) und erstellen Sie ein Gnuplot-Skript, um die Details besser steuern zu können

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

und Gnuploting der Daten:

gnuplot -p ex.gnu < ex.tsv

wir sehen das entsprechende Histogramm.

Um eine PNG-Datei zu erstellen (zum Hochladen und Anzeigen in SO), fügen Sie zwei weitere Zeilen hinzu:

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

Geben Sie hier die Bildbeschreibung ein


7

Arbeitslösung für gnuplot v5.0:

Eingabedatendatei loc.dat:

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

Gnuplot- Skript locations.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" - Titel der Haupthandlung

  • set xlabel "location"- Beschriftung für xAchse einstellen

  • set ylabel "count"- Beschriftung für yAchse einstellen

  • set grid - Hinzufügen eines Rasters zum Plot

  • (column(0)):2:xtic(1)- Spaltenbereich, (column(0))- Da die 1. Spalte in der Eingabedatei nicht numerische Werte enthält, müssen wir die numerische 1. Spalte imitieren, da gnuplot nur numerische Werte darin erwartet

  • w l- bedeutet mit Linien , alle Datenpunkte mit Linien zu verbinden


Interaktiver Start:

$ gnuplot
gnuplot> load "locations.plt"

Gerendertes Ergebnis:

Geben Sie hier die Bildbeschreibung ein


Ich wollte nur erwähnen, beachten Sie die Anführungszeichen um sites.plt im Befehl gnuplot> load "locations.plt", gnuplot erfordert, dass dies load locations.pltnicht funktioniert und Sie erhalten den "internen Fehler: STRING-Operator auf undefinierte oder nicht-STRING-Variable angewendet", wenn Sie ihn vergessen.
jrh
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.