Immer wieder ist es erforderlich, Daten schnell und effektiv in Diagrammen darzustellen. Das in diesem Artikel vorgestellte Programm Gnuplot leistet dabei schon seit vielen Jahren gute Dienste, fristet aber dennoch ein unverdientes Schattendasein.
Messdatenvisualisierung klingt zunächst sehr speziell, aber nach kurzer Überlegung finden sich zahllose praktische Anwendungsbeispiele, sei es die Überwachung der Raumtemperatur, die Auswertung von Logfiles oder Darstellung von Börsenkursen. Mit Gnuplot steht dazu seit über zehn Jahren ein Werkzeug zur Verfügung, dessen Kommandozeilen-Interface zwar spartanisch anmutet, aber in Kombination mit Shellskripten und anderen Tools ungeahnte Flexibilität entfaltet.
Für Freunde der Bequemlichkeit gibt es zudem einige grafische Frontends. Dazu gehören Kile[3], ein Latex-Editor mit integriertem Gnuplot-Frontend, und Unignuplot[4]. Hier soll aber die Kommandozeile im Vordergrund stehen, die eine systemunabhängige und automatisierte Verarbeitung von Daten ermöglicht. Gnuplot erlaubt dabei Visualisierungen im zwei- oder dreidimenisionalen Raum und geht auch bei extrem großen Datenmengen nicht in die Knie.
|
Listing 1: |
|---|
01 set xrange [-150:3800]
02 set xtics ("1980" 0, "1981" 365, "1982" 365*2, "1983" 365*3,
03 "1984" 365*4, "1985" 365*5, "1986" 365*6, "1987" 365*7, "1988" 365*8,
04 "1989" 365*9, "1990" 365*10)
05 set title "Monatstemperaturen [¡C] der Jahre 1981 - 1990"
06 set xlabel "Jahre"
07 set ylabel "Temp. [¡C]"
08 set grid
09 plot 'tempmin.dat' title "min.Temp." with lines,
10 'tempmax.dat' title "max.Temp." with lines
|
Die Kommandozeile
Das Programm hat übrigens nichts mit dem GNU-Projekt der Free Software Foundation zu tun, es handelt sich um eine zufällige Namensgleichheit. Gnuplot ist nicht einmal freie Software oder Open Source im Sinne der Open-Source- Initiative. Es darf zwar modifiziert werden, jedoch ist die Veröffentlichung modifizierter Versionen lediglich in Form von Patches erlaubt.
Nach dem Programmstart durch Eingabe von »gnuplot« bietet sich dem Anwender ein Prompt. Hier werden Gnuplot-spezifische Befehle eingegeben, zum Beispiel »plot cos(x)« zur Darstellung der Kosinusfunktion. Gnuplot öffnet dazu ein separates Fenster und zeichnet darin den Graphen.
Einfache Datensätze
Für die darzustellenden Daten kann es die unterschiedlichsten Quellen geben. Sie können von Messgeräten zur Erfassung physikalischer Größen kommen (etwa Temperatur, Luftdruck, Luftfeuchtigkeit) oder beispielsweise aus dem Internet (etwa Börsendaten). Außerdem ist es möglich, sich virtuelle Messdaten zu schaffen.
Welcher Weg auch immer beschritten wird, die Messdaten liegen grundsätzlich als Messdatensatz vor. Wie im vorigen Absatz erwähnt, erzeugt der Befehl »plot« eine Ausgabe. In diesem einfachen Beispiel wurde dem »plot«-Befehl lediglich eine mathematische Funktion übergeben. Um Messdaten aus einer Datei zu verarbeiten, übergibt man »plot« den Dateinamen als Argument. Das Dateiformat ist dabei extrem simpel: Gnuplot verarbeitet Dateien zeilenweise. Eine Zeile repräsentiert einen Datensatz, der wiederum aus mehreren Spalten bestehen kann. Die Spalten werden durch Tabulatoren oder Leerzeichen voneinander getrennt.
Wenn der Datensatz in der Datei »bsp .dat« als einfache Zahlenkolonne (ein Wert pro Zeile) vorliegt, erfolgt die Darstellung mit Hilfe des Befehls »plot \’bsp.dat\’«. Um Messdaten anders darzustellen, gibt es folgende »style«-Attribute des »plot«-Befehls: »lines«, »points«, »linespoints«, »dots«, »impulses«, »steps«, »fsteps«, »histeps«, »boxes«, »errorbars«, »xerrorbars«, »yerrorbars«, »xyerrorbars«, »boxerrorbars«, »boxxyerrorbars«, »vector«, »financebars«, »candlesticks« (unterschiedliche Darstellungsformen zeigt Abbildung 1). Die Syntax lautet immer: »plot \’ Datei\’ with Style«
Meist ist es nicht erwünscht, sämtliche Spalten des Datensatzes darzustellen, sondern nur ausgewählte. Beispielsweise kann durch »plot \’bsp.dat\’ using 2:3« die zweite und dritte Spalte ausgegeben werden. Im Folgenden soll eine ansprechende Grafik der Monatstemperaturen in Melbourne (Australien) der Jahre 1981 bis 1990 erstellt werden.

Abbildung 1: Hier sind drei unterschiedliche Ausgaben zu sehen, die mit Hilfe des Plot-Befehls (»with points«, »with lines«, »with impulses«) erstellt wurden.
Beispiel Klimadaten
Die Daten lieferte eine Wetterstation. Sie liegen in den Dateien »tempmin.dat« und »tempmax.dat« (minimale beziehungsweise maximale Monatstemperaturen) vor. Es handelt sich um einspaltige Dateien mit den jeweiligen Temperaturen. Bei komplizierten Grafikdarstellungen ist es nicht sehr effektiv, alle Befehle der Reihe nach einzugeben. Deshalb besteht die Möglichkeit, sich eine Plot-Datei zu erstellen. Diese Datei »temp.plt« soll sämtliche Befehle, die für das Beispiel notwendig sind, enthalten. Dazu gibt man sie einfach in einem Texteditor ein.
Gnuplot erlaubt es auch, alle am Prompt eingegebenen Befehle automatisch in eine Plot-Datei zu schreiben. Das erledigt der Befehl »save OptionDateiname«. » Option« ist entweder »functions«, »variables« oder »set«. Sind keine Optionen angegeben, werden die aktuellen Sets, Funktionen, Variablen und der letzte »plot«- beziehungsweise »splot«-Befehl gespeichert. »load ” Dateiname“« lädt die Datei wieder.
Eine besondere Funktion hat die Datei »~/.gnuplot«. Sie wird, sofern überhaupt vorhanden, beim Start von Gnuplot eingelesen. In ihr kann man die Grundeinstellungen speichern, die bei jedem Start des Programms zu laden sind. Gnuplot liefert eine solche Datei allerdings nicht mit, sodass man sie sich selber erstellen muss. Am besten geht das mit »save Option /home/ BENUTZER/.gnuplot«.
|
Spezielle |
|---|
|
Mehrere Datensätze
Im Beispiel sind mehrere Datensätze in einem Diagramm darzustellen. Das geschieht folgendermaßen: »plot \’tempmax.dat\’ title \’max. Temp.\’ with lines, \’tempmin.dat\’ title \’min. Temp.\’ with lines«. Die Beschriftungen im Diagramm werden mit »set«-Befehlen gesetzt. Zum Setzen des Diagrammtitels dient »set title ” Titel“«, die x-Achse beschriftet »set xlabel ” X-Titel“«, die y-Achse entsprechend »ylabel«.
Die Anweisung »set key x, y« positioniert die Legende an der Position x:y, »set nokey« blendet sie aus. Der Befehl »set xtics« ermöglicht eine individuelle Beschriftung der x-Achse. »set grid« blendet ein Hilfsgitter ein. Den Plot-Bereich erweitert oder begrenzt folgender Befehl: »set xrange [xmin:xmax]«. Beispiele liefert Listing 1. Eine Beispielausgabe ist in Abbildung 2 zu sehen.
|
Listing 2: |
|---|
01 set title "Durchschnittliches Einkommen (fiktiv)" 02 set xlabel "Dienstjahre" 03 set ylabel "Einkommen [Euro]" 04 set xrange [-1.5:48] 05 plot 'einkommen.dat' title "Einkommen" with boxes, 06 'einkommen.dat' title "Abweichungen" with errorbars |
|
Listing 3: Auszug |
|---|
01 -31 -194 -661 02 58 149 -605 03 -2 188 -599 04 ... |
Fehlerbalken
Oft ist es erwünscht, Messdaten mit den zugehörigen Messfehlern oder Abweichungen neben den eigentlichen Messdaten darzustellen. Dazu gibt es in Gnuplot den Befehl »with errorbars«. Dabei müssen entsprechende Anfangs- und Endpunkte der Fehlerbalken als eigene Spalten im Datensatz vorhanden sein. Ist nur eine Spalte für die Definition der Fehlerbalken vorhanden oder wird mit »using 1:2:3« die Verwendung der Spalten limitiert, entnimmt Gnuplot das Ausmaß des Fehlerbalkens der dritten Spalte. Der Wert wird dann als Differenz zum Funktionswert interpretiert (Funktionswert +/- Abweichung).
Wenn der Anwender die Fehlerbalken mit der Ausgabe »with boxes« kombiniert, erfolgt die Darstellung der eigentlichen Messwerte in Balkenform und jene der Abweichungen in Impulsform. Die gesamte Plot-Datei für das gegebene Beispiel zeigt Listing 2.
Zur Darstellung von Daten im dreidimensionalen Raum dient der Befehl »splot«. Im folgenden Beispiel geht es um die 3D-Visualisierung einer Menge von Messdaten. Die Koordinaten der Punkte liegen in der Datei »3dpunkte .dat« in folgender Form vor: »X Y Z« (siehe Listing 3).
|
Listing 4: |
|---|
01 set title "3D-Darstellung von Punktkoordinaten" 02 set data style lines 03 set contour base 04 set surface 05 set hidden3d 06 set view 50,10,1.0,1.0 07 01 set dgrid3d 40,51,3 08 show contour 09 splot '3dpunkte.dat' title "Netzgitter" |
|
Listing 5: |
|---|
01 set terminal postscript color 02 set output 'dateiname.ps' 03 replot |
|
Listing 6: |
|---|
01 set terminal postscript eps color 02 set output 'dateiname.eps' 03 replot |
3D-Befehle
Für die dreidimensionale Darstellung gibt es in Gnuplot einige spezielle Befehle. »set view rot_x, rot_z, scale_x, scale_z« beeinflusst den fiktiven Blickwinkel des Benutzers auf die 3D-Grafik. Zu berücksichtigen sind dabei die möglichen Rotationsintervalle; »rot_x« (die Defaulteinstellung ist 60 Grad) nimmt Werte zwischen 0 und 180 Grad an, »rot_z« (Defaulteinstellung: 30 Grad) kann zwischen 0 und 360 Grad liegen. Für das Beispiel aus Listing 4 gilt: »set view 50, 10, 1.0, 1.0«. Die Anweisung »set hidden3d« blendet verdeckte Liniensegmente aus, um den 3D-Effekt noch zu verstärken.
Soll Gnuplot unregelmäßig verteilte Datenpunkte darstellen, ist es empfehlenswert, zuerst die Lücken in der Datenpunktverteilung durch Interpolation zu schließen. Dazu dient der Befehl »set dgrid3d«. Ihm müssen die Anzahl der gewünschten Intervalle in x- und y-Richtung und ein Gewichtungsfaktor übergeben werden, hier also: »set dgrid3d 40,51,3«. »set ticslevel« (Defaulteinstellung: 0.5) verändert den Anfangspunkt der vertikalen Achse.
Da die meisten Anwender ihre Diagramme in Dokumente einbinden wollen, gibt es den Befehl »set terminal«. »set output ” Dateiname“« erzeugt eine Ausgabedatei (Listings 5 und 6).
Der Funktionsumfang von Gnuplot ist sehr groß, daher sei jedem das umfangreiche Hilfesystem empfohlen. Erklärungen zu allen Befehlen liefert die Eingabe »help Begriff«. Das komplette Hilfesystem wird mit »help« aufgerufen. Weitere Unterlagen über Gnuplot finden sich im Internet unter anderem bei[2],[5] und[6]. Das englischsprachige Handbuch ist unter[1] einzusehen. (mwe)
|
Infos |
|---|
|
[1] Gnuplot-Homepage: [http://www.gnuplot.info] [2] Gnuplot-Tutorial: [http://www.duke.edu/ hpgavin/gnuplot.html] [3] Kile-Homepage: [http://perso.club-internet.fr/pascal.brachet/kile] [4] Unignuplot-Homepage: [http://unicalculus.sourceforge.net/unignuplot/index.html] [5] Gnuplot-Handbuch: [http://www.tu-chemnitz.de/urz/anwendungen/grafik/gnuplotdoc.html] [6] Gnuplot-FAQ: [http://www.ucc.ie/gnuplot/gnuplot-faq.html] |
|
Der |
|---|
|
Dipl.-Ing. Alexander Reiterer ist Forschungsmitarbeiter an der Technischen Universität Wien, derzeit schreibt er an seiner Doktorarbeit. |







