Aufmacher

Interessante Kurven

Mit Gnuplot Daten und Funktionen visualisieren

01.05.2007
Im wissenschaftlichen Umfeld kaum noch wegzudenken, fristet Gnuplot auf den meisten anderen Linux-PCs ein Schattendasein. Das wird dem Diagrammprofi nicht gerecht, denn auch abseits der Hochschulen ist er oft sehr nützlich.

Bei Experimenten, wie sie Ingenieure und Naturwissenschaftler durchführen, fallen regelmäßig große Datenmassen an, die erst verständlich werden, wenn man sie in Diagrammform betrachtet. Auch Logdateien, etwa eines Webservers, profitieren von einer grafischen Umsetzung, und wer mit mathematischen Funktionen hantiert, benutzt zur Veranschaulichung gerne einen Funktionsplotter.

Datensätze und Funktionen grafisch aufzubereiten, ist nicht nur an Schulen und Universitäten eine wichtige Aufgabe – die Einsatzbereiche reichen von rein privaten Anwendungen, wie der Analyse monatlicher Ausgaben, zu Trendanalysen an den großen Börsen. Unter Linux bietet sich für diese Aufgabe das Tool Gnuplot an: Es liegt so gut wie jeder Distribution bei und ist ein wahrer Alleskönner. Auf den folgenden Seiten erfahren Sie, wie Gnuplot funktioniert und wie Sie es effizient einsetzen.

Installation und erste Schritte

Der einfachste Weg zur Gnuplot-Installation ist die Distributions-eigene Paketverwaltung: So reicht etwa unter Ubuntu ein sudo apt-get install gnuplot aus. Sollte Ihre Distribution wider Erwarten kein Gnuplot-Paket enthalten, greifen Sie den Quelltext [1] zurück. Die ganz neue Version 4.2 liegt noch keiner Distribution bei – wenn Sie damit arbeiten wollen, führt kein Weg am Compiler vorbei. Alle hier vorgestellten Beispiele funktionieren aber auch mit der älteren Version 4.0.

Abbildung 1: Gnuplot erzeugt zwar Grafiken, die Steuerung läuft aber über ein Konsolenprogramm, an dessen Prompt Sie Befehle eingeben.

Sie starten Gnuplot durch Eingabe von gnuplot im einem Terminalfenster (Abbildung 1). Die Meldung Terminal type set to 'x11' weist darauf hin, dass Gnuplot für grafische Ausgaben ein X-Window-Fenster nutzen wird. Mit einem beherzten plot sin(x) öffnen Sie ein solches Fenster, das den Verlauf der Sinusfunktion zeigt (Abbildung 2).

Abbildung 2: Die Ausgabe von Gnuplot landet standardmäßig auf dem Bildschirm. Die Abbildung zeigt eine Sinuskurve.

Gnuplot kennt noch viele weitere Ausgabemöglichkeiten, so darf der Graph etwa als Pixelbild in einer png-Datei oder in einem PDF-Dokument landen. Die Umstellung erreichen Sie mit einem set-Befehl: Um ein png-Bild zu erzeugen, geben Sie beispielsweise set terminal png ein. Die Zieldatei teilen Sie Gnuplot separat mit: set output "sinus.png". Geben Sie nun ein zweites Mal plot sin(x) ein, speichert Gnuplot die Sinuskurve in der Datei sinus.png (Abbildung 3).

Abbildung 3: Alternativ erzeugt Gnuplot auch Ausgabedateien, hier eine PNG-Grafik.

In der Tabelle "Ausgabeformate" finden Sie eine Auswahl der möglichen Terminals, die teilweise auch Parameter zulassen: So ist es etwa bei der LaTeX-Ausgabe möglich, Schrifttyp und -größe der Achsenbeschriftungen einzustellen: Mit dem Befehl

set terminal latex roman 12

stellen Sie die Ausgabe auf die Serifenschrift (Times) Roman in 12 Punkt um; für die png-Ausgabe ändern Sie mit size x,y die Größe des erzeugten Bilds. Eine detaillierte Übersicht aller Terminals mit ihren Parametern finden Sie unter [2].

Ausgabeformate

Terminal Funktion
corel Corel-Draw-Zeichnung
gif, png GIF- oder PNG-Bild
latex LaTeX-Quelltext
pdf Ausgabe PDF-Format
postscript PostScript-Datei
x11 Ausgabe im X-Window-Fenster

Mathematische Funktionen

Die Sinusfunktion ist nur eine von vielen, die Gnuplot zeichnen kann. Daneben gibt es die übrigen trigonometrischen Funktionen wie Kosinus (cos(x)) und Tangens (tan(x)), Logarithmusfunktionen (zum Beispiel der natürliche Logarithmus log(x)) und die Quadratwurzel (sqrt(x)). Gnuplot beherrscht alle Funktionen, die in der Programmiersprache C bekannt sind. Eine vollständige Liste finden Sie unter [3]. Aus den einfachen Funktionen setzen Sie bei Bedarf auch komplexe Ausdrücke wie cos(sin(x)) oder cos(x)+sin(x) zusammen [6].

Um Gnuplot zu verlassen, geben Sie exit ein; mit help rufen Sie das eingebaute Hilfesystem auf.

Datenanalyse mit Gnuplot

So nützlich Gnuplot als Funktionsplotter ist – das Programm ist lange nicht auf diese Aufgabe beschränkt: Eine seiner Stärken ist die Datenanalyse. Typischerweise liegen Daten, seien es Messwerte oder Protokolldaten, in Dateien oder Datenbanken vor. Listing 1 zeigt einen Ausschnitt der Beispieldatei weblog.txt, welche die Zugriffsstatistik einer Webseite enthält. Jede Zeile enthält einen Datensatz, der Seitenzugriffe mit einem bestimmten Browser zählt.

Listing 1

Beispieldaten

Konqueror_3.4   1
Mozilla_4.0     8
Mozilla_5.0     222
Mozilla_5.001   3
Mozilla_Firefox_0.9.3   3
Mozilla_Firefox_1.0     30
Mozilla_Firefox_1.0.1   2
Mozilla_Firefox_1.0.2   2
Mozilla_Firefox_1.0.3   7
Mozilla_Firefox_1.0.4   4
Mozilla_Firefox_1.0.6   3
Mozilla_Firefox_1.0.7   32
Mozilla_Firefox_1.5     6
Mozilla_Firefox_1.5.0.1 3
[…]

Als Spaltentrenner versteht Gnuplot Tabulatoren und Leerzeichen; kommaseparierte Dateien bereiten dem Tool Probleme. Im Textformat sind solche Daten schlecht lesbar, aber Gnuplot sorgt schnell für Übersicht: Mit

plot "weblog.txt" using :2 title "Anzahl Zugriffe" with boxes

wird die Datensammlung übersichtlich (Abbildung 4). Hierbei sorgt using :2 dafür, dass Gnuplot die zweite Spalte auswertet, title "Anzahl Zugriffe" erzeugt die Legende für die Balken, und with boxes legt fest, wie das Programm die Balken darstellt.

Abbildung 4: Ein einfaches Balkendiagramm ist immer anschaulicher als eine lange Liste.

Ohne letzteres Argument zeichnet Gnuplot die Werte als einzelne Punkte. Alternativ sind auch Linien (with lines, verbindet die Einzelpunkte), senkrechte Linien für jeden Datenpunkt (with impulse) oder gefüllte Flächen (with filledcurves) möglich. Abbildung 5 zeigt drei Typen der Ausgabe im Vergleich. Eine Übersicht aller Alternativen erhalten Sie, wenn Sie die Angabe des Modus weglassen, also nur plot "weblog.txt" using :2 title "Anzahl Zugriffe" with eingeben.

Abbildung 5: Drei von vielen Typen: von links nach rechts lines, impulse und boxes.

Gnuplot erkennt automatisch, ob es genügend Spalten für einen bestimmten Modus gibt. Enthält die Quelldatei mehr als zwei Spalten, teilen Sie dem Programm über using Spalte1:Spalte2 mit, welche es für die x- und y-Achse verwenden soll. Die erste Textspalte im Beispiel ist dafür aber nicht geeignet.

Scripting mit Gnuplot

Der Darstellung in Abbildung 4 fehlen die Browsernamen. Zwar ist Gnuplot nicht automatisch in der Lage, diese aus der Datendatei zu extrahieren, aber dieses Problem ist lösbar: Gnuplot kann vordefinierte Sequenzen von Aufrufen als Skripte gebündelt ausführen. Mit ein wenig Shellprogrammierung erzeugen Sie aus Listing 1 in wenigen Schritten Listing 2.

Listing 2

Beispiel eines Gnuplot-Skriptes

set title "Zugriffe mit unterschiedlichen Webbrowsern"
set xlabel "Browser"
set ylabel "Zugriffszahl"
set xtics rotate ("Konqueror_3.4" 1, "Mozilla_4.0" 2, "Mozilla_5.0" 3, "Mozilla_5.001" 4, "Mozilla_Firefox_0.9.3" 5, "Mozilla_Firefox_1.0" 6, "Mozilla_Firefox_1.0.1" 7, "Mozilla_Firefox_1.0.2" 8, "Mozilla_Firefox_1.0.3" 9, "Mozilla_Firefox_1.0.4" 10, "Mozilla_Firefox_1.0.6" 11, "Mozilla_Firefox_1.0.7" 12, "Mozilla_Firefox_1.5" 13, "Mozilla_Firefox_1.5.0.1" 14, "Mozilla_Firefox_1.5.0.10" 15, "Mozilla_Firefox_1.5.0.2" 16, "Mozilla_Firefox_1.5.0.4" 17, "Mozilla_Firefox_1.5.0.6" 18, "Mozilla_Firefox_1.5.0.7" 19, "Mozilla_Firefox_1.5.0.9" 20, "Mozilla_Firefox_2.0" 21, "Mozilla_Firefox_2.0.0.1" 22, "Mozilla_Firefox_2.0.0.2" 23, "MS_Internet_Explorer_5.0" 24, "MS_Internet_Explorer_5.01" 25, "MS_Internet_Explorer_5.23" 26, "MS_Internet_Explorer_5.5" 27, "MS_Internet_Explorer_6.0" 28, "MS_Internet_Explorer_7.0" 29, "Netscape_5.0" 30, "Netscape_7.1" 31, "Opera_7.23" 32, "Opera_9.00" 33, "Opera_9.01" 34, "Opera_9.02" 35, "Opera_9.10" 36, "Safari_312.5" 37, "Safari_419.3" 38, "Unknown" 39)
set terminal png
set output "weblog.png"
plot "weblog.txt" using :2 title "Anzahl Zugriffe per Browser" with boxes

In Gnuplot laden Sie das Skript mit load "weblog.plot" und erhalten dann das in Abbildung 6 dargestellte Diagramm als PNG-Datei. (Dafür sind die beiden schon bekannten Befehle set terminal und set output verantwortlich.) Die erste Zeile gibt dem Diagramm eine Überschrift, und die Zeilen 3 und 4 definieren die Achsentitel.

Die sehr lange Zeile 6 erzeugt die Einteilung der x-Achse, wobei rotate dafür sorgt, dass Gnuplot die Browsernamen im Diagramm um 90 Grad dreht. Die Liste enthält Kombinationen aus Browsernamen und zugehörigem x-Wert: So sorgt etwa "MS_Internet_Explorer_5.01" 25 dafür, dass statt der Zahl 25 auf der x-Achse der Text "MS_Internet_Explorer_5.01" erscheint. Die numerischen x-Werte ergeben sich aus den Zeilennummern in der Datendatei.

Abbildung 6: Beschriftungen der Achsen heißen in Gnuplot tics und sind manuell definierbar.

Fazit

Gnuplot ist ein mächtiges Tool, das neben dem Einsatz als Funktionsplotter vor allem bei der Datenanalyse hilft. Die Liste der möglichen Einstellungen und Diagrammvarianten ist sehr lang, die Dokumentation [4] gibt einen Überblick. Einfache Shellskripte erweitern die Funktionalität zusätzlich. Wenn Sie tiefer in das Thema einsteigen wollen, sind die Beispiele und Tutorials unter [5] eine erste Anlaufstelle.

Infos

[1] Gnuplot: http://www.gnuplot.info

[2] Ausgabeformate/Terminals: http://www.gnuplot.info/docs_4.0/gnuplot.html#Terminal_Index

[3] Mathematische Funktionen: http://www.gnuplot.info/docs_4.0/gnuplot.html#Function_Index

[4] Gnuplot-Dokumentation: http://www.gnuplot.info/documentation.html

[5] Tutorials und weitere Hilfen: http://www.gnuplot.info/help.html

[6] Kombinieren von mathematischen Funktionen: http://www.gnuplot.info/docs_4.0/gnuplot.html#Expressions

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

Kommentare