Gnuplot auf die Schnelle

Allgemeines

Der Einstieg

Die wichtigsten Befehle

Ein Beispiel

 

Zurück zur Hauptseite

   

Allgemeines

Oft möchte man schnell eine mathematische Funktion zeichnen. Excel ist dafür nur schlecht geeignet, da man den Umweg über irgendwelche diskreten Zellen gehen muss. Auch hat nicht jedermann ein teuers Matheprogramm zur Verfügung. Zum Glück gibt es mit Gnuplot eine freie Software, die sowohl mathematische Funktionen, aber auch Daten wie beispielsweise Messwerte ausplotten, also in einem Koordinatensystem grafisch darstellen kann. Das Programm ist frei (GPL) und für alle Betriebssysteme verfügbar. Die Homepage lautet www.gnuplot.info, dort gibt es das Programm zum Download. Für Windows muss das Zip-Archiv einfach ausgepackt und in ein neues Verzeichnis kopiert werden. Die Datei wgnuplot.exe ist es. Bei Linux packt man entsprechend das tar.gz-Archiv aus. Es gibt zahlreiche Anleitungen für Gnuplot im Internet, die wenigsten jedoch auf Deutsch. Deshalb habe ich hier diesen Einstieg zusammengestellt. Es gibt noch zahlreiche andere Anweisungen und Einstellungen (besondere Achsenteilungen, Schriftformatierung, Linienarten definieren etc.), die der erfahrene Benutzer auf den Originalseiten nachlesen möge. Vielen Dank an Jan Krieger und Eva Schmidtner für die Tipps.

Der Einstieg

Gnuplot arbeitet Kommandozeilen-orientert. Nach dem Starten des Programmes befindet man sich in der Interpreter-Oberfläche, in der Zeile für Zeile Befehle eingegeben werden können. Wer ein schnelles Erfolgserlebnis haben möchte, gibt einfach "plot sin(x)" ein und es erscheint augenblicklich eine Sinuskurve auf dem Bildschirm.
Da dies auf Dauer ziemlich mühsam ist, gibt es die Möglichkeit, die Befehle in eine Textdatei zu schreiben und diese zu Laden. Damit werden alle Befehle, die in der Datei stehen, sofort ausgeführt. Der zentrale Befehl lautet plot, damit wird geplottet. Um die Funktion den eigenen Vorstellungen anzupassen, müssen vorher allerlei Einstellungen mit dem Befehl set vorgenommen werden.

Die wichtigsten Befehle

Die allerwichtigsten Kommandos bei Gnuplot sind:

loadlädt eine Datei mit Gnuplot-Anweisungen und führt diese sofort aus. Der Dateiname muss mit Anführungszeichen angegeben werden.
Beispiel:
load "ehochxdiagramm.plt"
reset setzt alle mit set gemachte Einstellungen zurück.
Beispiel:
reset
set termlegt das Ausgabeterminal fest. In Betracht kommt der Bildschirm bei Windows: set term windows bei Linux: set term x11. Außerdem kann in eine Datei geplottet werden: set term postscript erzeugt eine Postscript-Datei; set term png ergibt eine png-Datei. Beim erstellen einer Datei kann dabei die Auflösung durch anhängen von size x,y eingestellt werden.
Beispiel:
set term postscript
set term windows
set term png size 800,600
set outputsetzt den Dateinamen, falls mit term eine Datei als Ausgabeart eingestellt wurde.
Beispiel:
set output "sinuskurve.ps"
set tableLenkt die Ausgabe in eine Datei um, wobei dort keine Grafik, sondern die zu plottenden Werte gespeichert werden. Dies kann genutzt werden, um komplexere Diagramme aus verschiedenen Tabellen zusammenzusetzen. Das Plotten dieser Datei erfolgt wie eines jeden anderen Daten-Files.
Beispiel:
set table "grenzkurve.txt"
set noborderschaltet den Rahmen um das Diagramm aus.
Beispiel:
set noborder
set borderschaltet den Rahmen um das Diagramm an bestimmten Seiten an. Es muss ein Parameter angebeben werden, der angibt, welcher Rahmen angezeigt werden soll. 1: unten; 2: links; 4: oben; 8: rechts. Zur Kombination der Rahmen kann die Summe gebildet werden.
Beispiel:
set border 11 (erzeugt einen Rahmen links, unten und rechts)
set xzeroaxis
set yzeroaxis
schaltet die Koordinatenachsen ein. Der "Border" befindet sich immer ganz außen am Diagramm. Nur mit dieser Einstellung bekommt man die Achsen durch den Ursprung. Es sind die Formatierungen der Achsen möglich: lt ergibt die Strichfarbe und lw die Dicke.
Beispiel:
set xzeroaxis lt -1 lw 1
set noautoscaleschaltet die automatische Festlegung des Definitions- und Wertebereiches ab. Dieser muss dann selbst gewählt werden.
Beispiel:
set noautoscale
set xrange
set yrange
legt den Definitions- und Werteberich des Diagramms, also den Umfang der x- und y-Achse fest, wenn er nicht automatisch gewählt wird.
Beispiel:
set xrange [-10:10]
set yrange [0:1]
set x2range
set y2range
legt den Definitions- und Werteberich der zweiten Achsen (rechts bzw. oben) fest.
Beispiel:
set x2range [-100:100]
set y2range [0:15]
set samplelegt die Auflösung der Kurve fest. Je höher die Zahl, desto mehr Punkte werden berechnet.
Beispiel:
set sample 10000
set isosamplelegt die Auflösung für den 3D-Plot fest. Damit wird auch die Zahl der angezeigten Gitterlinien festgelegt.
Beispiel:
set isosample 20
set sizegibt die Möglichkeit, die Grafik relativ zum Fenster zu verkleinern oder zu vergrößern. Ist nützlich, wenn nicht alles drauf geht.
Beispiel:
set size 0.7,0.7
set originverschiebt den Ursprung des Koordinatensystems umd die Angegebenen Einheiten. Nützlich zusammen mit set size.
Beispiel:
set origin 0.1,0.1
set xtics
set ytics
legt die Teilung der unteren Abszisse bzw. der linken Ordinate fest. Die Teilstriche werden mit Zahlen beschriftet.
Beispiel:
set xtics 5
set xtics axis
set ytics axis
Damit werden die Skalen samt Nummerierung nicht am Rand der Plotbox angezeigt, sondern an den Achsen.
Beispiel:
set xtics axis
set x2tics
set y2tics
legt die Teilung der zweiten (oberen) Abszisse bzw. der zweiten (rechten) Ordinate fest. Die Teilstriche werden mit Zahlen beschriftet.
Beispiel:
set x2tics 0.5
set xmtics
set ymtics
set xm2tics
set ym2tics
legt die zweite Stufe der Teilung der jeweiligen Achsen fest. Die Teilstriche werden nicht mit Zahlen beschriftet.
Beispiel:
set xm2tics 0.1
set ymtics 0.5
set xlabel
set ylabel
ermöglicht die Beschriftung der Achsen. Anzugeben ist der Text sowie die Koordinaten der Beschriftung. Es kann durch den Zusatz font die Schriftart und die Schriftgröße eingestellt werden. Dies funktioniert jedoch nicht auf alles Terminals, z.B. nicht bei Windows. Es geht jedoch z.B. bei eps. (Dank an Thomas Beringer für den Tip!)
Beispiel:
set xlabel "x-Achse" 5,-0.2
set ylabel "Höhe der Kosten" -0.5,20 font "Helvetica,16"
set labelschreibt Text in das Diagramm. Es muss der Text sowie die Koordinaten für die Position angeben werden. Auch hier kann die Schrift geändert werden.
Beispiel:
set label "Angebotsfunktion" 85,200
set parametricwechselt in den parametrischen Modus. Damit werden die Variablen t (bei plot) bzw. t und u (bei splot) als unabhängige Variablen behandelt. Diese können auf die Dimensionen des Diagramms abgebildet werden, so dass auch komplexere Funktionen (z.B. Spiralen) gezeichnet werden können.
Für die Variablen t und u gilt die selbe Syntax wie für x und y, also beispielsweise set trange [5:15].
Beispiel:
set parametric
set multiplotschaltet in den Multiplot-Modus, in dem mehrere Diagramme gezeichnet werden können. Die schon geplotteten Diagramme werden nicht, wie sonst üblich, überschrieben. Dies kann sowohl dazu genutzt werden, mehrere Kurven in ein Diagramm zu zeichnen, als auch mehrere getrennte Diagramme nebeneinander zu zeichnen (in Verbindung mit set origin).
Beispiel:
set multiplot;
plot f(x);
plot g(x);
set pm3dDiese Einstellung schaltet bei 3D-Plots farbige Oberflächen ein (zusätzlich zu den Gitterflächen).
Beispiel:
set pm3d
fit Mit der funktion fit können Funktionen an Datenwerte angepasst werden. Dazu muss zunächst eine Funktion definiert werden und danach der fit-Befehl aufgerufen werden, wobei mit dem Schlüsselwort via die anzupassenden Parameter angegeben werden.
Beispiel:
f(x) = a*x+b
fit f(x) "values.csv" using 1:2 "%lf,%lf" via a,b
plot ist der Befehl zum Erzeugen der Grafiken. Es kommen dabei die mit set getätigten Einstellungen zur Anwendung. Mit plot muss die gewünschte Funktion (als Funktion von x) angegeben werden. Alternativ kann auf die Datei mit den zu plottenden Daten verwiesen werden. Es können auch mehrere plot-Anweisungen aufeinander folgen. Alle Kurven werden dabei in ein Diagramm gezeichnet. Die Option notitle schaltet die Legende aus. Es können mit lc die Farbe, mit lt der Linientyp (ob gestrichelt etc.) und mit lw die Strichbreite angegeben werden. Die Option axis x1y1 legt fest, welche Achsenskala für die jeweilige Funktion verwendet wird (y1: primäre Achse; y2: sekundäre Achse etc.). Die Option with lines legt fest, dass aus einer Datei geladene Daten als Linie und nicht als Punkte gezeichnet werden.
Beispiele:
plot 2^x notitle lc 2 lw 1
plot "daten.txt" with lines lc 1 lw 2
plot log(x) axis x1y1 lt 3, x^2 axis x1y2 lt 2
usingist kein eigenständiges Kommando sondern wird an plot angehängt, wenn eine Datei geplottet werden soll. Damit lässt sich bestimmen, welche Spalten der Datei als x und als y-Werte aufgefasst werden sollen.
Beispiel:
plot "daten.txt" using 1:4
Dies plottet die 4. Spalte der Daten gegen die 1. Spalte.
 
Sehr praktisch ist weiterhin das Anhängen eines Formatstrings; damit können andere Spaltentrenner als das Leerzeichen verarbeitet werden. Es können beispielsweise csv-Files direkt geplottet werden. Der String hat beispielsweise die Form "%lf,%lf,%lf". Damit werden drei Spalten durch Komma getrennte Zahlen eingelsen (%lf ist die Wertespalte, dazwischen wird das Trennzeichen angegeben).
Beispiel:
plot "daten.txt" using 1:4 "%lf\t%lf\t%lf\t%lf"
Dies plottet Daten einer durch Tabs getrennten Datei.
plot
im parametric-Modus
weicht leicht von der Standard-Syntax ab: es müssen zwei Variablen bzw. Funktionen angegeben, werden, die in x- und y-Richtung abgetragen werden. Falls trange nicht mit set festgelegt wurde, kann dies hier in eckigen Klammern angegeben werden.
Beispiel
plot [0:10] t**2,sin(t)
splotist der plot-Befehl für dreidimensionale Diagramme. Splot plottet Oberflächen, die durch eine Funktion von x und y definiert werden müssen. Auch hier gibt es eine parametric-Version des Befehls.
Beispiel:
splot 0.1*x**2-0.2*y**2
? :Mit dem Fragezeichen und dem Doppelpunkt können Funktionen abschnittsweise definiert werden. Vor dem Fragezeichen muss die Bedingung angegeben werden, bei "wahr" gilt die Funktion vor dem Doppelpunkt, bei "falsch" die Funktion nach dem Doppelpunkt.
Beispiel:
(x < 6) ? f(x) : 0
Für x kleiner 6 gilt die Funktion f(x), sonst ist der Funktionswert gleich Null.
1/0Um "undefiniert" zu verwenden, kann der Ausdruck 1/0 verwendet werden. Dies ist z.B. praktisch, um eine Funktion nur in einem bestimmten Bereich zu plotten.
Beispiel:
(-1<x && x<6) ? f(x) : 1/0
Dies definiert die Funktion nur im Bereich von -1 bis 6.
#ist das Kommentarzeichen. Alles was danach folgt, bleibt unberührt in der Datei stehen und wird nicht abgearbeitet.
\Dieses Zeichen kann verwendet werden, um eine Eingabe über mehrere Zeilen sich erstrecken zu lassen. Es muss am Ende der nicht beendeten Zeilen stehen.
Beispiel:
plot sin(x) \
cos(x);

 

Ein Beispiel

Man nehme die folgende Datei tansin.plt und lade sie mit load "tansin.plt".

#Gnuplot Beispiel

reset

set term windows
# set term x11
# set term png
# set output "tansin.png"

set size 0.7,0.7
set xtics 2.5
set mxtics 2
set ytics 2
set mytics 2
set xtics axis
set ytics axis

set noborder
set xzeroaxis lt -1 lc -1 lw 1
set yzeroaxis lt -1 lc -1 lw 1

set label "tan(x)/sin(x)" at -5,1 font "Helvetica,24"

set noautoscale
set xrange [-10:10]
set yrange [-10:10]

set sample 10000

plot tan(x)/sin(x) notitle lc 2 lw 2

Diese Datei ergibt folgende Grafik

Zurück zur Hauptseite

Dieses Dokument darf unter Nennung des Autors unter gleichen Bedingungen weitergegeben werden (Creative Commons CC-BY-SA) Creative Commons Lizenzvertrag
Joachim Aurbacher (joalbach@gmx.net) – 2007-2011