Wie visualisiere ich Zeitreihendaten?

8

Ich habe einige Zeitreihendaten, die ich als 2D-Plot visualisieren möchte.

Die Eingabe ist im ISO-Datumsformat und durch Leerzeichen getrennt, ein Datensatz pro Zeile:

2010-10-21 23
2010-10-22 32
etc.

Die Ausgabe sollte ein gut aussehender 2D-Plot sein. Grundlegende Anforderungen:

  • Ausgabe in ein X11-Fenster (als Vorschau) und in eine PNG-Datei
  • Die x-Achse muss die Daten verstehen und die Daten natürlich skalieren, z. B. sollte eine Lücke zwischen 3 Tagen dreimal so lang sein wie eine Lücke zwischen 1 Tag
  • sollte über ein Skript aufrufbar sein
  • schöne Ausgabe und bequem zu bedienen

Bonus:

  • SVG-Ausgabe

Ich habe es versucht gnuplotund es funktioniert - es hat eine Datumsunterstützung:

gnuplot> set xdata time
gnuplot> set timefmt "%Y-%m-%d"
gnuplot> plot "test.dat" using 1:2

Aber ich habe einige Probleme mit Gnuplot:

  • Mit den Standardeinstellungen sehen Diagramme sehr hässlich aus
  • Es ist schwierig, Dinge im Handbuch zu finden - z. B. beim Zeichnen von Punkten, wie verwende ich kleine gefüllte Kreise anstelle des Standardzeichens '+'?
  • Die Gnuplot-Shell ist ein Schmerz im Nacken - sie verwendet keine Readline, sie ist defekt, die Befehlsvervollständigung ist ein Witz, ich weiß nicht, wie man vi-Verknüpfungen aktiviert - oder wenn sie unterstützt werden, was ist mit der umgekehrten Suche usw.

Daher meine Frage: Was sind die Alternativen zur Visualisierung von Zeitreihendaten?

Oder übertreibe ich die Gnuplot-Probleme?

maxschlepzig
quelle

Antworten:

5

Der gesamte Existenzzweck von RRDTool besteht darin , Zeitreihendaten zu zeichnen. Es ist jedoch in erster Linie für die automatisierte grafische Darstellung gedacht und möglicherweise nicht für Ihre Anforderungen geeignet.

Das gesagt:

  • Es kann entweder in PNG oder SVG ausgegeben werden, verfügt jedoch über keine Vorschaufunktion.
  • Die Zeitskalierung ist integriert.
  • Einfaches Skript (Befehlszeilenzugriff oder Bibliotheken in vielen Skriptsprachen).
  • Die Ausgabe kann so gestaltet werden, dass sie ziemlich anständig aussieht.

RRDTool-Diagramm

Kowh
quelle
Klingt interessant, fehlende Vorschau ist gar nicht so schlecht - nur ein PNG zu generieren und einen Bildbetrachter nebeneinander zu verwenden, sollte in Ordnung sein. Können Sie ein Beispiel für einen einfachen Befehlszeilenaufruf dieses Tools geben?
Maxschlepzig
Grundsätzlich führen Sie rrdtool create ...einmal aus, um die RRD- rrdtool update ...Datenbank einzurichten, einmal pro Datenelement und rrdtool graph ...um ein Diagramm zu erstellen .
Kowh
12

R ist in so etwas besser als Gnuplot, weil:

  1. Es ist eine vollständige Programmierumgebung mit C- und Fortran-kompatiblen Erweiterungs-APIs . Wenn Ihr Computer etwas kann, können Sie es mit R tun.

  2. Viele haben bereits ihre Lösungen für häufig auftretende Probleme in das CRAN : Comprehensive R Archive Network eingebracht . Möglicherweise finden Sie die zoound ggplot2-Pakete hilfreich für diese Aufgabe.

  3. Es gibt viele Bücher über Zeitreihenanalyse und R im Allgemeinen .

R hat alles, wonach Sie gefragt haben:

  • Ausgaben an X11, PNG oder (mit einem Add-On ) SVG

  • Gefüllte Kreise für Plotpunkte: pass pch=19oder pch=20to par () oder points () . Es gibt viele andere vordefinierte Plotpunktsymbole sowie Unicode, wenn Sie eine Schriftart mit Unicode-Unterstützung verwenden.

  • Zeitbewusstes Diagramm: Wenn die integrierten Diagramme nicht die gewünschte Skalierung haben, können Sie mit den Plotprimitiven von R alles erstellen, was Sie benötigen

  • Von einem Skript aus aufrufbar: Verwenden Sie eine #!/usr/bin/RscriptShebang-Zeile in Ihrer R-Programmdatei

  • Schön und praktisch: Es gibt GUI-Frontends, wenn Sie möchten und wenn Sie nicht möchten, bietet die standardmäßige befehlsgesteuerte Umgebung viele nette Funktionen, wie die Möglichkeit, den R-Quellcode vieler integrierter Operationen anzuzeigen, was hilfreich ist um zu lernen, wie das System zusammengesetzt ist. (Ja, viel von R ist in R geschrieben!)

  • Hübsche Handlungen: Antialiasing ist die Standardeinstellung, wenn R gegen Kairo erstellt wird. Dies ist der Fall, wenn es sich um eine neuere Version unter Linux handelt. In alten Versionen von R ist möglicherweise kein AA integriert. Eine Vorstellung von der Leistungsfähigkeit von R, wenn Sie etwas Zeit investieren, finden Sie hier:

    (Klicken Sie auf das Bild für einen Artikel, der es beschreibt.)

In Bezug auf die Gnuplot-Befehlszeile können Sie sie erstellen, um GNU-Readline, BSD libedit oder als Ersatz ein benutzerdefiniertes integriertes Befehlszeilen-Bearbeitungsschema zu unterstützen. (Dies gemäß S.20 des Handbuchs .) Ich habe Gnuplot 3.7 auf einem Computer und 4.0 auf einem anderen, und beide sind mit Readline erstellt. Ist Ihre Binärdatei ohne diese erstellt?

Warren Young
quelle
Ich habe angefangen, R für alle meine Statistiken zu verwenden und bei der Arbeit zu zeichnen. Es ist großartig!
jsbillings
Guter Hinweis zu libedit. Nun, ich verwende das Standard-Gnuplot-Paket unter Ubuntu 10.04. Es scheint, dass es gegen libedit verlinkt ist, was zumindest den vi-Modus zu unterstützen scheint. Die Befehlsvervollständigung ist jedoch nur minimal (funktioniert nur für Dateinamen) und nicht mit Gnuplot-Befehlen, dh sie ist im Grunde genommen nutzlos (dies ist nicht die Schuld von libedit).
Maxschlepzig
Könnten Sie eine einfache Beispiel-R-Sitzung zum Generieren eines Basisplots hinzufügen (Lesen der (oben skizzierten) Datei und Ausgeben einer Plotfunktion, denke ich)?
Maxschlepzig