Forum: PC-Programmierung Gnuplot mit Tastaturnavigation


von Thomas W. (thomas_v2)


Angehängte Dateien:

Lesenswert?

Hallo,
dieses Thema ist zwar keine Frage, aber für die Codesammlung war es mir 
doch zu schmal.

Im Anhang sind ein paar Beispieldateien die zeigen, wie man mit gnuplot 
in Trenddiagrammen mittels der Tastatur navigieren kann.

Bei den Beispieldateien habe ich zwei csv-Dateien angefügt, je eine für 
Temperatur- und Luftdruck-Messwertreihen. Beide Messdaten werden in 
einem gemeinsamen Diagramm mit der Zeit auf der X-Achse dargestellt.

Mit den Pfeil-Tasten links/rechts lässt sich in der Zeit zurück/vor 
navigieren, mit den +/- Tasten kann man den dargestellten Zeitbereich 
tageweise strecken/verkürzen.
In der Windows Version kann man im Diagramm zusätzlich über die Maus 
zoomen. Nach dem Zoomen wird beim Verschieben des Zeitbereichs das 
Diagramm um die gezoomte Zeitdifferenz verschoben.

Getestet habe ich es mit der Windows Gnuplot Version 4.4.
Irgendwo mitten in den Demo-Dateien von gnuplot findet man zur 
Maus/Tastatur-Auswertung auch ein Beispiel. Da ich aber nie alle 
durchgeklickt habe, ist mir diese recht nützliche Funktion nie weiter 
aufgefallen.
Da die generelle Funktionalität auch in den Demo-Dateien enthalten sind, 
gehe ich mal davon aus dass es auch unter einem X11 Terminal 
funktioniert.

Dateien:
- main.plt (Hauptdatei, diese muss mit wgnuplot gestartet werden)
- loop.plt (wird von main.plt aufgerufen, beinhaltet die Auswertung der 
Tasten)
- luftdruck.csv (Luftdruck Messwerte von 1.1.2011 bis heute)
- temperatur.csv (Temperatur Messwerte von 1.1.2011 bis heute)

Die Daten aus den CSV-Dateien sind im Anhang nur abgespeckt. Auf meinem 
Rechner haben die Dateien jeweils knapp 40.000 Zeilen, macht von der 
Geschwindigkeit her bei gnuplot aber keinen Unterschied.

Das einzige Problem was ich feststellen konnte ist, wenn man zu schnell 
die Tasten drückt bleibt gnuplot teilweise mal hängen. Man sollte nach 
jedem Tastendruck warten bis das Diagramm neu gezeichnet wurde.

Gruß
Thomas

von Yalu X. (yalu) (Moderator)


Lesenswert?

Danke für den Hinweis, wieder was dazugelernt :)

> Das einzige Problem was ich feststellen konnte ist, wenn man zu schnell
> die Tasten drückt bleibt gnuplot teilweise mal hängen.

Dieses Problem hatte ich nicht, allerdings verwende ich die Linux-
Version mit Wxt-Ausgabefenster. Drückt man die Tasten zu schnell (oder
zu lange, so dass der Autorepeat einsetzt), werden die Tastedrücke
gepuffert und der Reihe nach abgearbeitet. Dauert der Bildaufbau zu
lange, kommt es allerdings zu etwas nervigen Nachlaufeffekten.

Aber etwas anderes ist mir aufgefallen: Wenn man mit den Pfeiltasten so
weit nach links oder rechts scrollt, dass keine Daten mehr in dem darzu-
stellenen Zeitintervall liegen, bricht Gnuplot mit folgender Meldung ab:

  "loop.plt", line 582: all points y value undefined!

Sicher kann man das irgendwie abfangen, habe jetzt aber nicht nachge-
schaut, wie.

von Thomas W. (thomas_v2)


Lesenswert?

Yalu X. schrieb:

> Dieses Problem hatte ich nicht, allerdings verwende ich die Linux-
> Version mit Wxt-Ausgabefenster. Drückt man die Tasten zu schnell (oder
> zu lange, so dass der Autorepeat einsetzt), werden die Tastedrücke
> gepuffert und der Reihe nach abgearbeitet. Dauert der Bildaufbau zu
> lange, kommt es allerdings zu etwas nervigen Nachlaufeffekten.

Ich nutze auch das Wxt-Terminal. Unter Windows scheint es da aber keinen 
Puffer zu geben, denn irgendwann bleibt die Ausgabe einfach stehen. Man 
kann dann fortsetzen, indem man in das Fenster mit der gnuplot Konsole 
geht (wenn man daraus gestartet hat) und dort eine Taste drückt.

Das Windows Terminal (set terminal windows) zeigt diese Effekte 
überhaupt nicht. Auch ist dieses Terminal in der Darstellung um einiges 
flotter als das Wxt-Terminal. Aber dort fehlen z.B. die Zoom-Historie, 
und die Bedienung/Darstellung ist auch nicht so schön.

> Aber etwas anderes ist mir aufgefallen: Wenn man mit den Pfeiltasten so
> weit nach links oder rechts scrollt, dass keine Daten mehr in dem darzu-
> stellenen Zeitintervall liegen, bricht Gnuplot mit folgender Meldung ab:
>
>   "loop.plt", line 582: all points y value undefined!
>
> Sicher kann man das irgendwie abfangen, habe jetzt aber nicht nachge-
> schaut, wie.

Das habe ich auch schon bemerkt. In meinen Messwertreihen befinden sich 
auch ein paar Lücken, und sobald im gewählten Zeitbereich keine y-Werte 
vorliegen hält gnuplot an.
Ich habe unter den gnuplot Kommandos aber noch nichts gefunden was man 
dazu missbrauchen könnte.


Das loop.plt Skript ist auch universell einsetzbar. Man kann an jedes 
bestehende plot-Skript einfach den Aufruf der loop.plt anhängen, und es 
dadurch mit der Tastatur bedienbar machen.
Also als erstes die "normale" Diagramm-Datei laden, und die loop.plt 
dann hinterherschieben ;-)
Damit man nicht auf die Zeit auf der X-Achse festgelegt ist, könnte man 
mit +/- einfach den aktuellen Zeitbereich verdoppeln oder halbieren.

--
Falls jemand mit den Beispieldateien Probleme hat:
In der loop.plt muss die Zeile 35 "print "S_DAY = " .S_DAY" entfernt 
werden, die ist von Tests übrig geblieben.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.