Daten mit Gnuplot darstellen

Auf meinem gestrigen Beitrag, wo ich meine Gewichtsentwicklung seit jetzt fast einem Jahr zeige, gab es einen Kommentar von Mimeiso, der gerne solche Darstellungen für sich machen würde, aber mit Apps zu diesem Zweck unzufrieden ist. Ich benutze keine App dafür. Ich benutze Gnuplot, und zwar auf meinem Rechner.

Gnuplot ist eine Open Source Software, die ich seit meinem Physikstudium in den Neunzigern benutze. Damals hatten wir sie gebraucht, um Daten darzustellen. Sie bietet aber vieles mehr, zum Beispiel um Funktionen an Daten anzupassen. Sie kann sogar Funktionen mit gemeinsamen Parametern an verschiedenen Datensätzen anpassen, was ich mit der kommerziellen Software Origin nie machen konnte — wenigstens nicht mit der alten Lizenz, die wir am Institut während meiner Doktorarbeit zur Verfügung hatten. Ich fand es sehr nützlich, um zum Beispiel bei einem Phasenübergang zweiter Ordnung den Ordnungsparameter anhand von verschiedenen, zeitgleich gemessenen Größen modellieren zu können. Die kritische Temperatur und der kritische Exponent sind für alle Größen gleich, nur der Skalierungsfaktor unterscheidet sich. Aber ich schweife wieder ab.

Das Tolle an Gnuplot ist also, dass es eine kostenlose, leistungsstarke Software für wissenschaftliche Darstellung und Analyse von Daten ist, und es ist für alle Betriebssysteme zu haben. Gut, für aufwendige statistische Analysen ist man mit R besser bedient, aber darum geht es hier nicht, sondern darum: Wie mache ich eine so geile Graphik wie hier unten? Es muss nicht unbedingt mit Excel gehen.

1. Gnuplot installieren

Hier zuerst das Link zum Herunterladen. Auf sourceforge muss man sich gar nicht anmelden, um Software herunterzuladen. Falls eine solche Einladung zum Anmelden angezeigt wird, einfach die paar Sekunden warten, bevor das Herunterladen gestartet wird. Ich denke, die Datei zum Herunterladen wird automatisch für das Betriebssystem angeboten, mit dem man gerade den Browser bedient.

Windows Nutzer laden die .exe Datei herunter, und der Rest sollte sich mit einem Doppelklick drauf von selbst ergeben, wenn man dieser Seite glaubt. Ich bin auf Ubuntu und brauchte nur sudo apt-get install gnuplot im Terminal anzugeben. Mac Nutzer sind selber Schuld und können Googeln, wie man Gnuplot installiert.

2. Daten vorbereiten

Alle meine Daten habe ich mit Hilfe eines Texteditors in einer Datei namens P.dat gespeichert. P, weil Gewicht auf Französisch poids heißt[1]. G.dat erfüllte den Zweck genau so gut. Oder wasauchimmer.txt, es ist egal. Meine Daten habe ich spaltenweise angeordnet, und darauf geachtet, dass jede Zeile den gleichen Format hat. Ein Leerzeichen zwischen den einzelnen Angaben, und für jede Gewichtsangabe zwei Nachkommastellen. So sieht ein Auszug meiner Datei aus:

04-12-2016 67.80 0.2 8 #black
05-12-2016 67.30 0.2 8 #black
06-12-2016 67.60 0.2 8 #black
07-12-2016 67.50 0.2 8 #black
08-12-2016 67.00 0.2 8 #black
12-12-2016 67.50 0.2 8 #black
13-12-2016 66.80 0.2 7 #red
14-12-2016 67.10 0.2 7 #red

Die erste Spalte ist das Datum. Das Format ist nicht wichtig, weil wir danach Gnuplot erklären, wie es zu verstehen ist. Man könnte Punkte oder Schrägstriche statt Bindestrichen benutzen, solange wir es später bei der Darstellung spezifizieren.

Die zweite Spalte ist das Gewicht. Die dritte Spalte enthält die Standardabweichung, oder eher meine Idee davon. Sie gibt an, in wie weit man dem Wert glaubt. Meine Waage zeigt Gewichte mit einer Nachkommastelle, daher könnte man ±0.1 angeben. Ich habe 0.2 gewählt, weil Wassereinlagerungen mehr als 100 g Unterschied von Tag zu Tag verursachen können. Das macht die Länge der Fehlerbalken um die Punkte aus. Wichtig ist hier, dass man den Dezimalpunkt statt einer Komma benutzt. Gnuplot spricht Englisch, das gilt auch für Zahlen.

Was in der letzten Spalte steht, ist nicht notwendig. Es ist die Farbkodierung, die in Gnuplot nicht einfach nachzuvollziehen ist. Als Kommentar habe ich mir als Gedächtnisstütze die Farbe aufgeschrieben — alles, was hinter einer Raute in einer Zeile folgt, wird von Gnuplot nicht interpretiert. Als Frau versteht man intuitiv, was es mit der Farbkodierung an sich hat. Wobei, als Mann könnte man es auch gebrauchen, wenn man zum Beispiel als Farbe kodieren will, ob man an dem Tag davor unterhalb oder oberhalb vom Tagesbedarf gegessen hat.

3. Mit Gnuplot Daten darstellen

Gnuplot starten. Unter Linux-basierten Betriebssystemen braucht man nur im Terminal gnuplot einzutippen. Auf Windows kann man auf dem Desktop eine Verküpfung zur ausführbaren Datei erstellen und auf diese klicken. Der Pfad zur ausführbaren Datei soll etwas wie C:\Program Files (x86)\gnuplot\bin\wgnuplot.exe sein. Dann öffnet sich ein Fenster mit einem Terminal, in dem man Befehle eintippen kann. Gnuplot ist auf Textbefehle basiert. Man schreibt etwas im Prompt, und beim Drücken der Eingabetaste interpretiert Gnuplot den Befehl und führt ihn aus. Oder gibt eine Fehlermeldung aus.

Ich empfehle, zuerst zu dem Verzeichnis zu gehen, wo die Datei P.dat liegt: cd 'C:\Pfad\zur\Datei', mit den einfachen Anführungszeichen, wobei C:\Pfad\zur\Datei natürlich nicht so eingetragen werden sollte, sondern durch den echten Pfad zur Datei ersetzt werden soll, wie zum Beispiel C:\Users\Toto\Documents. Wenn man sich vertippt, sagt Gnuplot Bescheid. Einfach nochmal probieren.

Das Darstellen von Dateien ist meistens ganz simpel: Man gibt plot 'P.dat' ein, und schon bekommt man ein neues Fenster mit einer Graphik. Der Anblick dürfte aber überraschend sein und gar nicht wie meine Graphik aussehen.

Es liegt daran, dass die erste Spalte, die der X-Achse entspricht, ein Datum-Format hat. Daher sollte man Gnuplot vorher darüber informieren: set xdata time. Der Punkt hier ist nur das Ende des Satzes und gehört nicht zum Befehl. Dann wollen wir Gnuplot das Format erklären: set format x "%d-%m-%Y" timedate. Somit weiß Gnuplot: Zuerst kommt der Tag (d für day), dann der Monat (m für month), dann das Jahr (Y für year), alles durch Bindestriche getrennt. Hier mehr zum Thema. Das reicht aber nicht, und man muss noch set timefmt "%d-%m-%Y" eintragen.

Der nächste Versuch mit dem plot Befehl scheitert, weil Gnuplot jetzt eine genauere Spezifizierung braucht, was dargestellt werden soll. Fragt mich nicht warum. Der neue plot Befehl lautet plot 'P.dat' using 1:2, was bedeutet, dass die 1. Spalte auf der X-Achse kommt, und die 2. Spalte auf der Y-Achse. Will man die Fehlerbalken dazu, heißt der Befehl plot 'P.dat' using 1:2:3 with errorbars. Wer wie ich noch möchte, dass die Punkte durch eine Linie verbunden werden, macht stattdessen plot 'P.dat' using 1:2:3 with errorlines. Jetzt fehlt nur noch die Farbkodierung: plot 'P.dat' using 1:2:3:4 with errorlines lc variable. Ich habe noch eine andere Form für die Punkte benutzt, mit gefüllten Kreisen: plot 'P.dat' using 1:2:3:4 with errorlines lc variable pt 7. Das gleiche nochmal ohne die Legende oben rechts: plot 'P.dat' using 1:2:3:4 with errorlines lc variable pt 7 notitle.

Nun sieht es schon mal besser aus, aber die Beschriftung auf der X-Achse ist total durcheinander. Das kann man verbessern, indem man das Datum vertikal und nicht horizontal schreiben lässt. Dafür zuerst den Befehl set xtics border in scale 1,0.5 mirror rotate by -270 autojustify eintippen, dann nochmal den plot Befehl. Die Legende der Y-Achse habe ich mit set ylabel "Körpergewicht [kg]" angegeben, für die X-Achse fand ich es nicht nötig.

4. Befehle zur Darstellung speichern

Puh, das war vielleicht aufwendig. Wenn man endlich soweit gekommen ist, eine zufriedenstellende Graphik zu machen, will man beim nächsten Mal nicht wieder von vorne anfangen. Zum Glück kann man alle bisher eingetragene und noch wirksame Befehle in einer Datei speichern: save 'P.gnu' zum Beispiel. Man braucht in Zukunft nur noch die Daten in P.dat zu aktualisieren, und in Gnuplot tippt man lediglich load 'P.gnu', was die ganzen Befehle wieder ausführt und die Graphik in einem neuen Fenster anzeigt.

Noch eine Anmerkung: Wenn man eine .gnu Datei auf einem Rechner erstellt hat, sollte man nicht glauben, dass man sie auf einem anderen Rechner mit Gnuplot so einfach benutzen kann. Je nach dem, welche Gnuplot-Version installiert ist, werden einige Befehle nicht mehr verstanden, und es bleibt nur noch übrig, wie in Punkten 3. und 4. für den neuen Rechner nochmal anzufangen. Trotzdem liebe ich Gnuplot.

[1] Na gut, Masse (masse auf Französisch) ist ein korrekterer Begriff als Gewicht. Im täglichen Leben außerhalb vom Labor benutzt man das Wort aber kaum, wenn man von der Zahl auf der Waage spricht, oder nur, wenn man sich gerne als Besserwisser mit einem Hang zum Narzissmus angibt.

Advertisements

2 Gedanken zu “Daten mit Gnuplot darstellen

  1. Da ich von der Darstellung bei Excel manchmal genervt bin, werde ich das mal ausprobieren, danke! Ansonsten kann ich die Android App Libra sehr empfehlen (ja, ich habe unterschiedliche stellen, wo ich (immer mal) mein Gewicht eintrage), die hat das nette Gadget, anzuzeigen, wieviel Kaloriendefizit die letzten Abnahmen entsprechen: da steht dann also so was wie: in der letzten Woche durchschnittlich so und so viele Kalorien am Tag eingespart, im letzten Monat so und so im Durchschnitt, im letzten halben Jahr… sehr interessant.

    Gefällt 1 Person

Teile deine Meinung mit!

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s