Plotten Spalten durch den Aufruf der header mit GnuPlot
Ich habe die Datei in diesem format:
x y1 y2 y3 ei1 ei2 ei3 es1 es2 es3
1 4 5 4 7 7 2 4 7 7
2 7 3 3 3 8 3 3 3 8
3 2 1 4 4 9 6 4 4 9
Will ich produzieren plots ähnlich zu dem, was der folgende Befehl würde
geben
plot "filename" using 1:2:5:8 with yerrorbars
aber mit den Spalten-Header(x
, y1
, ei1
und es1
) zu nennen.
Wie kann das getan werden?
Seite 84 von gnuplot-Handbuch (Dokumentation der using
Befehl) lautet:
Height Weight Age
val1 val1 val1
... ... ...
dann die folgenden plot-Befehle sind alle gleichwertig
plot ’datafile’ using 3:1, ’’ using 3:2
plot ’datafile’ using (column("Age")):(column(1)), \
’’ using (column("Age")):(column(2))
plot ’datafile’ using "Age":"Height", ’’ using "Age":"Weight"
Allerdings, wenn ich versuchte, ich bekam nur die Zeilen-Indizes gegenüber sich selbst.
plot "filename" using 1:2:5:8 with yerrorbars
undplot "filename" using "x":"y1":"ei1":"es1" with yerrorbars
erzielen Sie dasselbe Ergebnis hier. Welche version von Gnuplot sind Sie laufen, getestet habe ich in gnuplot 4.6 patchlevel 0.- Version 4.4 patchlevel 3 im Lieferumfang von Ubuntu. Ist es zu alt?
- Ja, Sie benötigen die version 4.6 oder höher für diese Funktion.
- wahrscheinlich mit der version 4.5 würde auch funktionieren, obwohl diese version ist wahrscheinlich ziemlich schwierig, jetzt zu kommen 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Blick auf die Dokumentation zu gnuplot 4.4 vs gnuplot 4.6 (aktuelle stabile Version), es scheint, dass die Funktion, die Sie verwenden möchten, wurde vermutlich eingeführt in gnuplot 4.5 (Ungerade zahlen sind, die Entwicklung äste -- wenn Sie als stabil, Sie bekommen erhöht auf eine gerade Zahl). Der einzige Weg, können Sie denken, dies zu erreichen, schreiben Sie ein einfaches Skript in einer anderen Sprache gibt die Spalte mit der Nummer (auf stdout). Hier ist ein einfaches Beispiel für die Verwendung von python-obwohl ich bin sicher, dass Sie tun können, diese in
awk
wenn Sie bleiben wollten, in einer POSIX-Umgebung:Dieses kleine Skript tut nichts Lust (Es übernimmt die Spaltenüberschriften in der ersten Zeile zum Beispiel), aber mit der power von python, es wäre ziemlich einfach zu erweitern ist das Skript weiter:
Nun können Sie dieses Skript aufrufen, wie:
python script.py datafile AGE
um herauszufinden, welche Spalte "ALTER" ist in. Es ist ein Fehler, wenn "ALTER" ist nicht in jeder Spalte.