GnuPlot ist ein kommandozeilenorientiertes und interaktives wissenschaftliches Plotprogramm, welches die Möglichkeit gibt, Daten und Funktionen graphisch darzustellen. Dabei können neben x-y-Diagrammen ebenso 3D-Diagramm gezeichnet werden und in verschiedene Ausgabeformate gespeichert werden. GnuPlot ist für verschiedene Betriebssysteme und Architekturen als Quelltext verfügbar, zu beziehen unter http://www.gnuplot.info . Für Windows, DOS und OS/2 stehen auch fertig kompilierte Binaries zur Verfügung.
Erster Start
GnuPlot wird an der Kommandozeile gestartet und begrüßt einem mit dem Prompt
gnuplot>
an dem die Kommandos zum Zeichnen eines Graphen angegeben werden können. Alternativ können die Kommandos in einer Datei abgelegt werden und in GnuPlot geladen werden, entweder GnuPlot mit dem Namen der Datei aufrufen (z.B. gnuplot test.gplt
um die Kommandos aus test.gplt
zu laden) oder am Prompt über
gnuplot> load "test.gplt"
Kommandos zur Graphformatierung
Achsen beschriften
Für die Achsenbeschriftung stehen die folgenden Kommandos zur Verfügung:
set xlabel 'text'
: Beschriftung der X-Achseset ylabel 'text'
: Beschriftung der Y-Achseset title 'text'
: Beschriftung des Diagramms (Diagramm-Titel)
Wird als Ausgabe LaTeX gewählt, können hier auch LaTeX-Befehle eingegeben werden, die zwar nicht in GnuPlot, jedoch in LaTeX richtig angezeigt werden.
Tickseinstellung auf den Achsen
Hauptticks
Die beschrifteten Hauptticks können über die u.a. set
-Kommandos eingestellt werden. Als Parameter für die Einstellung der Hauptticks ist die folgende Syntax möglich:
parameter := {axis | border} {{no}mirror} {{no}rotate {by }}
{ autofreq | ; | , {,} | ({"<label>"} {} {,{"<label>"}...) }
{ font "name{,}" }
{ textcolor }
set xtics
: Setzten der Einstellungen der Hauptticks für die X-Achseset ytics
: Setzten der Einstellungen der Hauptticks für die Y-Achseset ztics
: Setzten der Einstellungen der Hauptticks für die Z-Achseset x2tics
: Setzten der Einstellungen der Hauptticks für die X2-Achseset y2tics
: Setzten der Einstellungen der Hauptticks für die Y2-Achseset cbtics
: Setzten der Einstellungen der Hauptticks für die CB-Achse
Beschreibung der Parameter
axis
: Ticks werden an der Achse gesetzt;border
: Ticks werden am Rand gesetzt;{no}mirror
:mirror
setzt unbeschriftete Ticks an der selben Position auf dem gegenüberliegenden Rand;nomirror
setzt diese nicht;{no}rotate {by}
:rotate
dreht die Beschriftung um 90° oder um die Gradzahl, die mit{by}
angegeben wurde (wird nicht von allen Terminaltypen unterstützt);norotate
unterbindet die Drehung.
Unterticks
Die <freq>
ist die Anzahl der Subintervals zwischen den Hauptticks (nicht die Anzahl der Unterticks). Wird default
angegeben, wird zum Standardwert gewechselt, für lineare Achsen ist dies 2 oder 5 in Abhängigkeit der Hauptticks.
set mxtics {| default}
: Setzt die Unterticks-Einstellung für die X-Achseset mytics {| default}
: Setzt die Unterticks-Einstellung für die Y-Achseset mztics {| default}
: Setzt die Unterticks-Einstellung für die Z-Achseset mx2tics {| default}
: Setzt die Unterticks-Einstellung für die X2-Achseset my2tics {| default}
: Setzt die Unterticks-Einstellung für die Y2-Achse
Ticks als Monatsnamen
Sollen die Achsen mit Monatsnamen beschriftet werden, so kann dies über die nachfolgenden Kommandos eingestellt werden. Dabei werden die Zahlen 1-12 zu den Monaten Jan-Dez umgewandelt. Überläufe werden mittels Modulo 12 auf einen gültigen Wert umgerechnet.
set xmtics
: Setzt die X-Achsen Ticks auf Monatsdarstellungset ymtics
: Setzt die Y-Achsen Ticks auf Monatsdarstellungset zmtics
: Setzt die Z-Achsen Ticks auf Monatsdarstellungset x2mtics
: Setzt die X2-Achsen Ticks auf Monatsdarstellungset y2mtics
: Setzt die Y2-Achsen Ticks auf Monatsdarstellungset cbmtics
: Setzt die Farbenboxachsen Ticks auf Monatsdarstellung
Diagramm-Ränder
Die Diagramm-Ränder werden automatisch berechnet, für eine Feineinstellung können die folgenden Einstellungen verändert werden.
set tmargin {}
: setzt den oberen Randset bmargin {}
: setzt den unteren Randset lmargin {}
: setzt den linken Randset rmargin {}
: setzt den rechten Randshow margin
: zeigt die aktuellen Werte für die Ränder an
Die Einheit für <margin>
sind Zeichenhöhe bzw. Zeichenbreite. Ein positiver Wert setzt die absolute Größe des Randes, ein negativer Wert (oder kein Wert) setzt diesen Rand wieder auf die automatische Einstellung. Bei 3D-Plots zeigt nur die Einstellung des linken Randes Wirkung.
Automatische Skalierung der Achsen
Die automatische Skalierung der Achsen wird über die Einstellung autoscale
eingestellt. Dies kann individuell für die Achsen x, y, z, cb, x2, y2 oder xy durchgeführt werden, das Standardverhalten ist die Einstellung für alle Achsen.
set autoscale {{|min|max|fixmin|fixmax|fix} | fix | keepfix}
unset autoscale {}
Werden Schlüsselwörter min
oder max
angefügt (dies ist nicht mit der Achse xy
möglich), so wird nur das Minimum bzw. das Maximum autoskaliert. Mit den Schlüsselwörtern fixmin
, fixmax
oder fix
wird die Erweiterung des Achsenbereiches auf die nächste Tic-Marken Position unterbunden.
Verfügbare Operatoren
Einseitige Operatoren
Symbol | Beispiel | Beschreibung |
---|---|---|
- | -a | einseitiges Minus |
+ | +a | einseitiges Plus |
~ | ~a | Einer-Komplement |
! | !a | logische Negation |
! | a! | Fakultät |
$ | $3 | Argumenten-/Spalten-Aufruf in using -Manipulationen |
Zweiseitige Operatoren
Symbol | Beispiel | Beschreibung |
---|---|---|
** | a**b | Potenzierung |
* | a*b | Multiplikation |
/ | a/b | Division |
% | a%b | Modulo |
+ | a+b | Addition |
- | a-b | Subtraktion |
== | a==b | Gleichheits-Operator |
!= | a!=b | Ungleichheits-Operator |
< | a<b | kleiner-Operator |
<= | a<=b | kleinergleich-Operator |
> | a>b | Größer-Operator |
>= | a>=b | Größergleich-Operator |
& | a&b | Bitweiser UND-Operator |
^ | a^b | Bitweises Exklusiv-ODER |
| | a|b | Bitweises Inklusiv-ODER |
&& | a&&b | Logisches UND |
|| | a||b | Logisches ODER |
Die Operatoren Modulo (%
), die Bitoperatoren (&
, ^
, |
) und die logischen Operatoren (&&
und ||
) verlangen als Argumente Werte vom Integertyp. Logisches UND und logisches ODER evaluieren das zweite Argument nur, wenn es benötigt wird.
Dreiseitige Operatoren
Als ternärer Operatoren wird der If-Then-Else-Operator (?:
) einzig unterstützt und besitzt das selbe Verhalten wie in C.
Symbol | Beispiel | Beschreibung |
---|---|---|
?: | a?b:c | Ternärer If-Then-Else-Operator |
Ist das erste Argument (a
) wahr, d.h. nicht 0, (dieses muß ein Integer-Wert sein), so wird das zweite Argument (b
) evaluiert und zurückgegeben – andernfalls wird das dritte Argument (c
) evaluiert und zurückgegeben.
Eingebaute Funktionen
Alle GnuPlot-Funktionen akzeptieren als Argument Ganzzahlen, reelle oder komplexe Zahlen - außer, es ist etwas anderes angegeben. Bei denjenigen Funktionen, die Winkelwerte als Argument benötigen oder diese zurückgeben, können diese als Radian oder Grad angegeben werden. Der Standardwerte hierfür ist Radian und kann über das Kommando angles
geändert werden.
Funktion | Beschreibung |
---|---|
abs(x) | absoluten Wert des Argumentes; der Rückgabewert ist vom selben Typ wie die des Arguments, für komplexe Argumente ist abs(x) definiert als die Länge von x in der komplexen Ebene [z.B. sqrt(real(x)^2 + imag(x)^2) ] |
acos(x) | inverser Cosinus in Radian oder Grad |
acosh(x) | inverser hyperbolischer Cosinus in Radian |
arg(x) | gibt die Ebene einer komplexen Zahl in Radian oder Grad zurück |
asin(x) | inversen Sinus in Radian oder Grad |
asinh(x) | inverser hyperbolischer Sinus in Radian |
atan(x) | inverser Tangens in Radian oder Grad |
atan2(y,x) | inverser Tanges vom Verhältnis der beiden reellen Teile der Argumente |
atanh(x) | inverser hyperbolischer Tangens |
besj0(x) | j0 Bessel-Funktion, Argumente müssen in Radian sein |
besj1(x) | j1 Bessel-Funktion, Argumente müssen in Radian sein |
besy0(x) | y0 Bessel-Funktion, Argumente müssen in Radian sein |
besy1(x) | y1 Bessel-Funktion, Argumente müssen in Radian sein |
ceil(x) | kleinster Integer-Wert, der nicht kleiner wie das übergebene Argument ist; bei komplexen Argumenten wird der kleinste Integer-Wert zurückgegeben, der nicht kleiner wie der reelle Anteil des Arguments ist; |
cos(x) | Cosinus in Radian oder Grad |
cosh(x) | hyperbolischer Cosinus in Radian oder Grad |
erf(x) | Fehler-Funktion des reellen Anteils vom Argument; ist das Argument eine komplexe Zahl, so wird der imaginäre Anteil ignoriert (siehe auch erfc , inverf und norm ) |
erfc(x) | Gibt 1.0 zurück, die Fehler-Funktion des reellen Anteils vom Argument; ist das Argument eine komplexe Zahl, so wird der imaginäre Anteil ignoriert (siehe auch erf , inverf und norm ) |
exp(x) | Exponential-Funktion; in manchen Implementationen, gibt exp(-x) für sehr große x einen undefinierten Wert zurück. Eine benutzerdefinierte Funktion wie safe(x) = x?100 ? 0 : exp(x) kann hier abhilfe schaffen |
floor(x) | größte Integer-Wert, der nicht görßer wie das übergebene Argument ist; bei komplexen Argumenten wird der größte Interger-Wert zurückgegeben, der nicht größer wie der reelle Anteil des Arguments ist; |
gamma(x) | Gamma-Funktion des reellen Anteils des Arguments; für den Interger-Wert n ist gamma(n+1) = n! |
ibeta(p,q,x) | unvollständige Beta-Funktionen des rellen Anteils der Argumente; die Argumente dürfen dabei die Schranken q>0 und x im Intervall [0:1] nicht überschreiten |
inverf(x) | Gibt die inverse Fehler-Funktion des reellen Anteils vom Argument zurück. Siehe auch erf und invnorm |
igamma(a,x) | unvollständige Gamma-Funktion der reellen Anteile der Argumente. Voraussetzungen sind a > 0 und x >= 0 . |
imag(x) | Gibt den imaginären Anteil des Arguments als reelle Nummer zurück. |
invnorm(x) | Inverse Normalverteilungsfunktion der reellen Anteile des Arguments. Siehe auch norm |
int(x) | Integer-Funktion |
lambertw(x) | Lambert’s W Funktion, definiert über die Gleichung z=(W(z)*exp(W(z)) mit z einer reellen Zahl und z >= -exp(-1) . |
lgamma(x) | Natürlicher Logarithmus der Gamma-Funktion der rellen Anteile des Arguments |
log(x) | Natürlicher Logarithmus (zur Basis e) |
log10(x) | Logarithmus zur Basis 10 |
norm(x) | Gaußsche Normalverteilung der reellen Anteils vom Argument. Siehe auch invnorm , erf und erfc |
rand(x) | rand(0) erzeugt eine Pseudozufallszahl im Interval [0:1] vom den aktuellen Wert der beiden internen 32-Bit Zustände. rand(-1) setzt die beiden internen Zustände zurück auf einen Standard-Wert. rand(x) mit x>0 setzt die beiden internen Zustände auf einen Wert basierend auf x . rand({x,y}) für x>0 setzt den Zustand 1 auf x und Zustand 2 auf y . |
real(x) | Reellen Anteil vom Argument |
sgn(x) | Gibt das Vorzeichen des reellen Anteils vom Arguments zurück. Rückgabewert ist 1 , wenn das Argument positiv ist, -1 , wenn das Argument negativ und 0 , wenn das Argument 0 ist |
sin(x) | Sinus in Radian oder Grad |
sinh(x) | hyperbolischer Sinus in Radian oder Grad |
sqrt(x) | Quadratwurzel |
tan(x) | Tangens in Radian oder Grad |
tanh(x) | hyperbolischer Tangens in Radian oder Grad |
Weitere Funktionen, die für die Manipulation und Darstellung von Daten verwendet werden können, aber keine mathematischen Funktionen sind.
Funktion | Beschreibung |
---|---|
column(x) | kann nur in Ausdrücken als Teil der using -Manipulationen verwendet werden; siehe auch using |
defined(x) | gibt 1 zurück, wenn die Variable x definiert ist, ansonsten 0 |
tm_hour(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt die Stunden im Bereich 0-23 als eine reelle Zahl zurück |
tm_mday(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt den Tag im Monat im Bereich 1-31 als eine reelle Zahl zurück |
tm_min(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt die Minuten im Bereich 0-59 als eine reelle Zahl zurück |
tm_mon(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt den Monat im Bereich 0-11 als eine reelle Zahl zurück |
tm_sec(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt die Sekunden im Bereich 0-59 als eine reelle Zahl zurück |
tm_wday(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt den Wochentag im Bereich 0-6 als eine reelle Zahl zurück |
tm_yday(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt den Tag im Jahr im Bereich 1-366 als eine reelle Zahl zurück |
tm_year(x) | interpretiert das Argument als eine Zeit in Sekunden seit dem 1. Jan. 2000 und gibt das Jahr als eine reelle Zahl zurück |
valid(x) | kann nur in Ausdrücken als Teil der using -Manipulationen verwendet werden; siehe auch using |
Internet-Links
- GnuPlot-Homepage
- Dokumentationsseite der GnuPlot-Homepage mit Online-Dokumentation (Englisch)
- GnuPlot FAQ (Englisch)