Interessante Kurven
Mit Gnuplot Daten und Funktionen visualisieren
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.
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.
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.
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.
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.



