Duisburger Linux User Group - http://www.dulug.de
Workshop zu Gnuplot
Autor: M. Franke

Gnuplot ist ein kleines aber mächtiges Programm um mathematische Funk-
tionen grafisch darzustellen. Da Gnuplot auch ohne grafischem Frontend
daherkommt muss man alles als Befehl per Hand eingeben. Da dass die
Sache nicht leichter macht ist hier nun ein kleiner Workshop dazu.

Gnuplot sollte den meissten Distributionen beilegen und wird durch den
Aufruf von 'gnuplot' in einem beliebigen X-Terminal gestartet. Danach
erhält man eine kleine Art Begrüssung in der die Version usw mitgeteilt
wird. Unter anderem auch den dezenten Hinweis darauf das der Befehl
'help' eine kleine Online-Hilfe bereitstellt und das ein FAQ unter
http://www.gnuplot.info/gnuplot-faq.html zu finden ist.

Eine einfache mathematische Funktion stellt man recht simple über den
Befehl 'plot' gefolgt von der mathematischen Funktion dar. Der Funk-
tionsaufruf um den Sinus darzustellen sieht dann folgendermassen aus:
gnuplot> plot sin(x)
Danach erscheint ein Fenster mit einem roten Sinus-Graphen. Da man auch
mehrere Graphen darstellen kann steht zur besseren Übersicht rechts oben
in der Ecke die Funktion (hier also sin(x)) gefolgt von einem roten
Strich. Zudem kann man dem Fenster die Koordinatenpunkte und Bereiche
(auf der X-Achse von -10 bis 10 und auf der Y-Achse von -1 bis 1) ent-
nehmen. Ist das Fenster aktiviert (einmal auf den Graphen klicken) kann
man es wieder mit 'q' verlassen. Will man nun den Sinus und Cosinus
gleichzeitig darstellen, muss man beide Funktionen getrennt durch ein
Komma eingeben:
gnuplot> plot sin(x), cos(x)
Man sieht sofort das sich die Bereiche nicht geändert haben aber rechts
oben in der Ecke stehen jetzt beide Funktionen gefolgt von ihrer Farbe.
Meissten möchte man gerade bei periodischen Funktionen wie dem Sinus
oder dem Cosinus nur eine Periode darstellen. Dazu muss man Gnuplot
vorher die Bereiche des Koordinatensystems mitteilen. Dies erreicht man
die Befehle 'set xrange[-x:x]' und set yrange [-y:y]. Sobald man Komma-
zahlen eingibt muss man unbedingt darauf achten kein Komma ',' einzu-
geben sondern einen Punkt '.':
gnuplot> set xrange [-3.141:3.141]
gnuplot> set yrange [-1:1]
gnuplot> plot sin(x), cos(x)
Die Zahl Pi muss man nicht immer Numerisch eingeben sondern ist eine
feste Variable in Gnuplot und heisst pi:
gnuplot> set xrange [-pi:pi]
Man kann unter anderem auch eigene Zahlen definieren:
gnuplot> ez=3
gnuplot> plot x+ez
Funktionen natürlich auch:
gnuplot> f(x)=sin(x)
gnuplot> plot f(x)

Falls man seinem Graphen ein Label mitgeben will, so kann man da mit der
Label-Funktion machen:
gnuplot> set label "Label Graph"
Es kann allerdings sehr Störend sein wenn das Label mitten im Graphen
erscheint und man möchte dann doch lieber nur einen Titel haben. Dafür
muss man erst das Label löschen:
gnuplot> set nolabel
Und dann eine Titel vergeben:
gnuplot> set title "Titel Graph"
Den Titel kann man wieder löschen wenn man keinen Titel eingibt:
gnuplot> set title ""
Man kann auch jeder Achse eine Beschreibung mitgeben:
gnuplot> set xlabel "X-Achse"
gnuplot> set ylabel "Y-Achse"
gnuplot> set zlabel "Z-Achse"
gnuplot> plot tan(x)
Die Z-Achse steht für 3D-Graphen, die jetzt noch nicht eingeblendet ist.
Darüber hinaus kann man ein Raster einblenden, dass das ablesen der
Zahlenwerte vereinfacht:
gnuplot> set grid
Abgeschaltet wird das Raster mit
gnuplot> set nogrid
Gnuplot beherrscht auch die Polardarstellung die aber erst aktiviert
werden muss:
gnuplot> set polar
Zudem ist die Veränderliche nicht mehr x sondern t! Wenn man jetzt wie
oben den Sinus darstellen möchte, so muss der Sinus in der Polardar-
stellung als Kreis mit einem Durchmesser von 1 dargestellt werden:
gnuplot> plot sin(t)
Wenn man nun die Polardarstellung wieder verlassen möchte, so muss man
folgenden Befehl eingeben:
gnuplot> set nopolar
Wie oben bereits erwähnt gibt es auch mit Gnuplot die Möglichkeit 3D-
Graphen darzustellen. Dazu muss man in keine bestimmte Darstellungsart
wechseln sondern hat direkt zu Beginn die beiden Veränderlich x und y
zur Verfügung:
gnuplot> splot sin(x)-cos(y)
Falls man immer wieder auf ein und denselben Graphen zurückgreifen muss,
so kann man sich eine kleine Datei schreiben die alle benötigten Befehle
enthält. So kann man z.B. die folgende Zeilen als Datei "test.dem"
spiechern:
set xlabel "X-Achse"
set ylabel "Y-Achse"
set zlabel "Z-Achse"
set title "Titel"
ez=3
plot sin(x**2), ez+x
Und mit Gnuplot folgenderweise laden:
gnuplot> load "test.dem"
Genauso wie man alle Befehle in einer Textdatei speichern kann, so kann
man auch Zahlenwerte in einer Wertetabellen speichern und als Diagramm
anzeigen lassen. Dazu am besten mal die folgende Tabelle speichern:
# Zahlenwerte
#xy
13.5
25.7
32.1
49.6
58.0
60.5
Durch die Raute '#' können Kommentare eingefügt werden und werden von
Gnuplot nicht weiter beachtet. Speichert man die Tabelle nun unter
"zahlen.dem" so kann man sie anschliessend so direkt darstellen:
gnuplot> plot "zahlen.dem"
Jetz kann man noch die Punkte miteinander verbinden:
gnuplot> plot "zahlen.dem" w lines

Zu guter letzt möchte ich nochmal kurz darauf eingehen wie man die
Graphen als Postscript-Datei speichert. Dazu muss man die Terminalaus-
gabe umstellen und ein Format (Hoch-/Querformat) wählen. Danach muss man
einen Dateinamen angeben und zuletzt den Graphen darstellen lassen:
gnuplot> set terminal postscript landscape
gnuplot> set output "plot.ps"
gnuplot> plot sin(x)
Als Format wurde hier im Beispiel das Querformat (landscape) gewählt, um
als Format das Hochformat zu wählen muss man 'portrait' anstelle von
'landscape' eingeben.

Wie man sieht kann man mit Gnuplot einiges erreichen und das hier war
nur ein kleiner Einblick. Anbei noch ein paar Links die tiefer auf
Gnuplot eingehen:
Homepage von Gnuplot (englisch)
http://www.gnuplot.info/
Eine erweiterte Kurzanleitung
http://www.we.fh-osnabrueck.de/fbwe/vorlesung/edv2/gplot/gplot.html
Artikel im Linux Magazin
http://www.linux-magazin.de/Artikel/ausgabe/1997/11/GNUPlot/gnuplot.html
Gnuplot Quick Reference Card (englisch)
http://www.math.uni-klu.ac.at/Software/cd2/math/gnuplot/gpcard.pdf