ubuntuusers.de

[gnuplot] histogramm erstellen

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

dersven

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

Hallo.

Ich habe Daten im folgenden Format:

Typ	anzahl
A	2346893
B	2930306
C	2931467
D	2347490
...	...

Nun möchte ich ein Histogramm daraus erstellen. Die Balken sollen mit der ersten Spalte berechriftet werden, und die höhe des Balken soll gegeben werden durch die zweite Spalte.

1
plot "file.dat" using 1:2 with boxes

gibt mir die Fehlermeldung:

x range is invalid

Ich möchte an der Stelle auch keinen range haben, sondern für jede Zeile der Datei einfach eine eigenen Spalte im Diagramm (bei mehreren Dateien sollen z.B. die einzelnen "A"-Spalten nebeneinander gesetzt werden). Ich habe gerade auf der gnuplot-Seite die Beispiele durchgeschaut, aber keine Lösung gefunden (die haben das über Funktionen gelöst).

Kann mir jemand weiterhelfen?

Grüße und Danke

[EDIT] Ein weiterer Versuch von mir war:

1
2
3
set yrange[0:]
set style data histogram
plot "./file1.dat" using 2:xtic(1), "./file2.dat" using 2:xtic(1)

Wenn jetzt aber die Reihenfolge der Daten in der Datei unterschiedlich ist, stehen die Balken in der Falschen Kategorie:

file1.dat

Typ	anzahl
A	2346893
B	2930306
C	2931467
D	2347490
...	...

file2.dat

Typ	anzahl
B    2930306000
A	2346893
C	2931467
D	2347490
...	...

der B-Balken der zweiten Datei steht in der "A"-Gruppe.

[EDIT]

Lux Team-Icon

Avatar von Lux

Anmeldungsdatum:
10. November 2005

Beiträge: 5152

Wohnort: Grüt (Gossau ZH), Schweiz

dersven schrieb:

Kann mir jemand weiterhelfen?

Kann es gerade nicht testen, aber ich würde tippen, dass Du nicht 1:2 plotten willst sondern 2:2. Die Unterschrift kannst Du eventuell mit xlabel setzen.

Gruss

Dirk

oliver1804

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

versuchs mal so:

set yrange[0:]
set style data histogram
plot "./file1.dat" using 2:xtic(1) smooth unique, "./file2.dat" using 2:xtic(1) smooth unique

Oliver

dersven

(Themenstarter)

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

Nein, klappt leider ebenfalls nicht. Zum Befehl "unique" steht in der hilfe auch:

 The `unique` option makes the data monotonic in x; points with the same
 x-value are replaced by a single point having the average y-value.  The
 resulting points are then connected by straight line segments.
 demos

ich kann mich echt nicht vorstellen, dass es keine Lösung dafür gibt.

oliver1804

Anmeldungsdatum:
27. März 2006

Beiträge: 279

Wohnort: Elmshorn

naja, wenn Du vorher ein sort drüberlaufen läßt, brauchst Du das nicht in gnuplot machen, denn ich denke, daß gnuplot nicht wirklich dafür gedacht ist.

müßte in Deinem Fall ungefähr so gehen:

sort -k1 datei > ergdatei

http://www.gnu.org/software/coreutils/manual/coreutils.html#sort-invocation

dersven

(Themenstarter)

Anmeldungsdatum:
16. August 2005

Beiträge: 792

Wohnort: Kreuzlingen, Schweiz

naja, was mache ich, wenn eine Klasse in einer Datei nicht besetzt ist? normal solte da ein Platz frei bleiben. bei Zahl denkt sich gnuplot auch, dass der Wert 0 ist, und macht dnn weiter.

Ist die Histogramm-Funktion noch nicht so ausgereift?

Antworten |