2012-06-06 5 views
10

Lets' nehmen dies als die Datendatei:Wie kann GnuPlot verwendet werden, um ein Zeitreihendiagramm aus einer CSV-Datei mit Datum und Uhrzeit in separaten Spalten zu zeichnen?

2012-06-01, 01:00, 1 
2012-06-01, 02:00, 2 
2012-06-01, 03:00, 4 
2012-06-01, 04:00, 3 
... 
2012-06-02, 01:00, 5 
2012-06-02, 02:00, 2 
2012-06-02, 03:00, 1 
2012-06-02, 04:00, 1 
... 

Ich weiß, wie timefmt und xdata einstellen Zeitreihen planen, wenn Datum und Uhrzeit mit einem einzelnen Feld dargestellt werden, sondern wie man das Grundstück mit GnuPlot, wenn die Zeit und Datum werden in separaten Spalten gespeichert?

Antwort

14

Nicht zu unterschiedlich, als würden Sie, wenn sie Leerzeichen ...

set timefmt '%Y-%m-%d, %H:%M' 
set xdata time 
set datafile sep ',' 
plot 'test.dat' u 1:3 w lines 

Ich weiß nicht, ob Sie timefmt mit Leerzeichen in es vor verwendet haben entweder

waren (für normale Leerzeichen getrennt Datendateien), aber in In diesem Fall geben Sie die Spalte an, in der die Zeitdaten beginnen - gnuplot sieht automatisch so viele Spalten aus, wie zum Füllen des Vollzeitformats benötigt werden. Natürlich benötigen Sie eine vollständige Verwendungsspezifikation (in diesem Fall bedeutet dies, dass die Daten in der dritten Spalte stehen - beachten Sie, nicht die zweite, wie Sie vielleicht erwarten).

(getestet auf gnuplot 4.4 - OS X)

+0

Gerade jetzt, ich durch Kommata getrennte Datendateien verwenden ISO- 8601 Datum-Uhrzeit-Format (wie 2012-06-06T14: 54Z) und überhaupt keine Leerzeichen. Aber ich werde müssen müssen durch Leerzeichen getrennte und durch Kommas getrennte Datum-Zeit-Werte in kommagetrennten Dateien. Danke für die Lösung, ich werde es versuchen. – Ivan

+0

@Ivan - Kein Problem. Ich hoffe, es klappt für dich. – mgilson

+0

Ich empfehle auch 'set format x"% Y-% m-% d \\ n% H:% M "' – Notinlist

5

Lauf Arch Linux Gnuplot 4.6 Patchlevel 3

ich nicht mgilson den Code-Schnipsel arbeiten konnte. Ich brauchte die xrange zu setzen, bevor es

all points y value undefined! 

ich

hatte beschweren stoppen würde
set xrange["2012-06-01, 01:00":"2012-06-02, 05:00"] 

und bekam schließlich ein hübsches Grundstück

+1

Bitte post als Kommentar zu mgilson Antwort, es ist keine Antwort für sich. Und für mich funktioniert sein Snippet gut mit 4.6.3 (Debian). – Christoph

+4

kann ich nicht. Habe nicht genug Reputationspunkte. –