Gnuplot installieren unter Mac OS X und Ubuntu

In dieser Anleitung wird gezeigt wie man Gnuplot so installiert, dass man das Ausgabe-Terminal X11 zur Verfügung hat.

Installation unter Mac OS X

Schritt 1:

Am bequemsten ist es, die ganze Arbeit der Installation von einem Paketmanager übernehmen zu lassen. Hierzu wird Homebrew heruntergeladen und installiert. Auf der Seite findet sich eine Codezeile, die man direkt ins Terminal posten kann. Es werden automatisch alle benötigten Dateien heruntergeladen und Homebrew installiert.

SchRITT 2:

X11 herunterladen und installieren.

Schritt 3:

Gnuplot wird jetzt mit Hilfe von Homebrew installiert. Damit man in Gnuplot nachher die Ausgabe-Terminals X11 und pdfcairo verwenden kann, müssen diese bei der Installation als Optionen mit angegeben werden.

brew install gnuplot --with-cairo --with-x11

Was es sonst noch für Installationsoptionen gibt, kann man sich mit folgender Zeile anzeigen lassen:

brew options gnuplot

X11 ist jetzt das Standard-Ausgabe-Terminal von Gnuplot.

Installation unter Ubuntu

Hier wird nur eine Codezeile im Terminal benötigt.

sudo apt install gnuplot-x11

Das Standard-Ausgabe-Terminal in Gnuplot heisst dann zwar nicht „X11“, aber die Funktionalität ist die gleiche.

Daten Plotten und Fitten in Gnuplot #1

[latexpage]

Diese Anleitung richtet sich an blutige Anfänger. Es wird das Plotten und Fitten von Daten an einem Beispiel Schritt für Schritt erklärt. Einzige Voraussetzung: Gnuplot muss schon installiert sein. Wie das geht, könnt ihr hier nachlesen.

Bevor es Los geht:

Bevor Gnuplot gestartet wird, muss man sich überlegen in welchem Verzeichnis die Daten liegen, die geplottet werden sollen. Man wechselt im Terminal in dieses Verzeichnis und öffnet Gnuplot.

cd Desktop/Ordner-mit-den-Daten-drin
gnuplot

Ich finde es nicht empfehlenswert direkt im Terminal zu arbeiten, da das schnell unübersichtlich wird. Es ist praktischer in einem Texteditor ein Skript zu schreiben, das anschließend von Gnuplot geladen wird. Das Skript muss in dem Ordner abgelegt werden, in dem die Messdaten liegen. Lässt man Gnuplot das Skript laden, verhält es sich so, als hätte man den ganzen Code direkt ins Terminal geschrieben.

load "skript.gp"

Die folgenden Code-Schnipsel werden alle in das Skript geschrieben.

Schritt 1: Laden der Daten

Bei diesem Beispiel handelt es sich um Messwerte der Kennlinie einer Siliziumdiode.

plot "silizium.txt"

Diese Zeile lädt die Werte aus der Datei und plottet sie. Man kann mit diesem Befehl natürlich auch direkt Funktionen plotten. Die Abbildung zeigt die Ausgabe. Anmerkung: Unter der Voraussetzung, dass die Standardeinstellung des Ausgabe-Terminals X11 ist.

bild1

Um die Kurve besser darzustellen bietet es sich zunächst an den Ausschnitt der X-Achse zu verändern. Um den veränderten Plot sichtbar zu machen, muss das geränderte Skript gespeichert und neu geladen werden. Arbeitet man nicht mit einem Skript, sonder direkt im Terminal, kann man den Befehl „replot“ verwenden.

plot "silizium.txt"
set xrange[0:0.9]
set yrange[0:100]

Gnuplot verwendet die englische Notation, daher werden Dezimalstellen mit einem Punkt abgetrennt. Die eckige Klammer mit den Doppelpunkten ist die Syntax für Intervalle. Sie taucht überall in Gnuplot auf.

Schritt 2: Fitten

Um in Gnuplot zu fitten, muss man eine Idee davon haben, welche Form der Fit haben soll. Da Diodenkennlinien immer Exponentialfunktionen enthalten, sieht die Fitfunktion wie folgt aus:

$f(x)=b e^{c x+d}$

Zusammen ergibt das dann:

set xrange[0:0.9]
set yrange[0:100]
f(x)=b*exp(c*x+d)
b=0.001
c=0.001
d=0.001 
fit [0.4:0.7] f(x) 'silizium.txt' via b,c,d
plot "silizium.txt", f(x)

Zeile 3: Definiert die Funktion $f(x)$. Noch ein Wort zur Syntax: Gnuplot kennt grundlegende mathematische Funktionen. So ist bsp. die Exponentialfunktion schon definiert und man kann sie direkt benutzen.

Zeile 4-6: Teilt Gnuplot mit wo es anfangen soll Parameter zu suchen. Wären diese drei Zeilen nicht enthalten, würde Gnuplot „1“ als niedrigsten Wert annehmen. Da sich die Parameter der Kennlinie der Siliziumdiode in einer anderen Größenordnung befinden, würde Gnuplot „NaN“ („Not a Number“) als Werte ausgeben.

Zeile 7 Führt den eigentlichen Fit durch. Das Intervall, das vor $f(x)$ steht, gibt an welcher Datenbereich gefittet werden soll. In diesem Fall ist es eigentlich nicht notwendig, das Intervall anzugeben, da die gesamten Messdaten mit der Fitfunktion erfasst werden. Hat man aber Messwerte, die an unterschiedlichen Stellen unterschiedliche Plots erfordern, ist es nützlich zu wissen, dass das geht. „via“ legt fest, welche Parameter der Fitfunktion bestimmt werden sollen.

Zeile 8 plottet die Messwerte und den Fit.

Der fertige Plot:

Kennlinie einer Siliziumdiode

Fragen und Anregungen sind herzlich Willkommen ^^

 

Daten Plotten und Fitten in Gnuplot #2

[latexpage]

In diesem Beispiel wurden Messwerte aus einem Versuch zur Comptonstreuung verwendet: messwerte_compton

Um den oben gezeigten Plot daraus zu erhalten kann man folgenden Code verwenden:

set term x11
set xrange[0:600]
set yrange[0:15000]
set xtics 50
set grid

#Fit für den Fotopeak
f(x)=a+b*x**2+c*x+d*x**3+e*x**4+f*x**5
fit [420:520] f(x) 'comptonkante.tsv' via a,b,c,d,e,f

#Fits für die Rückstreukante
g(x)=i*x+k
fit [275:320] g(x) 'comptonkante.tsv' via i,k
h(x)=l*x+m
fit [320:350] h(x) 'comptonkante.tsv' via l,m

plot "comptonkante.tsv", [440:510] f(x), [150:350] g(x), [300:400] h(x)

Was passiert?

Zeile 1 legt fest welche Ausgabe das Terminal erzeugen soll. Bei x11 wird keine Datei erzeugt, sondern der Plot lediglich angezeigt.

Zeile 2 definiert die Wertebereiche der beiden Achsen.

Zeile 3 sorgt dafür, dass die Werte der X-Achse in 50er Schritten laufen

Zeile 4 fügt das Raster ein.

Zeile 6: Kommentare werden mit „#“ gekennzeichnet. Gnuplot ignoriert alles was hinter einem „#“ steht.

Zeile 7: Definition der Fitfunktion für den Fotopeak (der rechte Peak im Plot). Verwendet wurde ein Plolynomzug der bis $x^5$ geht. Gnuplot kennt die sonst übliche Schreibweise für „x^5“ nicht. Es muss „x**5“ verwendet werden.

Zeile 8: Die Funktion „fit“ wird aufgerufen. Die Werte in der eckigen Klammer geben den Datenbereich an der gefittet werden soll. Diese Angabe muss vor der Fitfunktion, also vor $f(x)$. Dann muss angegeben werden aus welcher Datei die Messwerte genommen werden sollen. Zuletzt muss mit dem Befehl „via“ noch mitgeteilt werden welche Parameter der Fitfunktion bestimmt werden sollen.

Zeile 10-14: Analog wie Zeile 8. Hier wurde für die anderen Wertebereiche andere Fitfunktionen definiert.

Zeile 16: Diese Zeile plottet die gesamten Daten und die zugehörigen Fits. Die eckigen Klammern geben an für welche X-Werte die Fitfunktionen gezeigt werden sollen. Ansonsten würde bspw. der Fit für den Fotopeak im Rest des Plots stören. Jeder einzelne Plot muss durch ein Komma von den anderen getrennt werden.