physics in a nutshell logo

Neue Webseite zum Physikstudium!

Header-Logo: genug-davon

Grundlagen und einfache Rahmendatei

Was ist gnuplot?

Bei gnuplot handelt es sich um ein skript- bzw. konsolengesteuertes Programm, das sehr gut geeignet ist, um Datensätze grafisch darzustellen (zu plotten). Neben einer Vielzahl an Darstellungsmöglichkeiten ermöglicht es außerdem die Speicherung der plots in verschiedenen Dateiformaten. Dadurch können z.B. plots erzeugt werden, welche sich sehr schön in LaTeX einbinden lassen.

Es ist aus Gründen der Übersichtlichkeit zu empfehlen, für jeden plot eine eigene Datei (ein Skript) zu erstellen. Dazu könnt Ihr den nachfolgenden Code verwenden und ihn z.B. als daten.plot abspeichern. Wenn ihr dann im entsprechenden Verzeichnis das Kommando gnuplot daten.plot ausführt, wird der plot in einem LaTeX-tauglichen Format abgespeichert und angezeigt.

Rahmendatei

Mit dieser Rahmendatei lassen sich einfache plots erstellen. Dies beinhaltet neben der LaTeX-kompatiblen Ausgabe eine vollständige Diagramm- und Achsenbeschriftung. In diesem Beispiel werden im Diagramm zwei Datensätze angezeigt, die in den Dateien messung1.dat und messung2.dat gespeichert sind.

# Terminalkonfiguration: 
# Farbausgabe für LaTex, Tics werden abgerundet
set terminal epslatex color rounded		

# Ausgabedatei wird erstellt, 'outputName'
# durch gewünschten Dateinamen ersetzen
set output 'outputName.tex'
						
# Legende angezeigen, mögliche Optionen:	
# top/center/bottom für vert. Ausrichtung
# left/right 		für horiz. Ausrichtung							
set key top left		
						
# Plot wird mit Titel versehen						
set title 'Titel des Plots'		

# Achsenbeschriftung			
set xlabel '$H$ in $\si{\ampere\per\meter}$'	
set ylabel '$B$ in $\si{\tesla}$' 				
# Es kann allgemein der LaTeX-Mathemodus verwendet werden!

# Plot wird mit Rasterlinien versehen
set grid		


# Der Plot wird ausgeführt
plot 'messung1.dat' using 1:2 title 'erste Messung',\
	 'messung2.dat' using 1:2 title 'zweite Messung'
# Die Werte aus der ersten Spalte werden jeweils auf der x-Achse
# dargestellt, die aus der zweiten Spalte auf der y-Achse
# Jede Kurve kann einen eigenen 'title' erhalten, welcher dann in der
# Legende angezeigt wird.
# Mit einem '\' ignoriert das Programm den Zeilenumbruch und wendet
# das 'plot'-Kommando auch noch auf die folgende Zeile an.

#  aktueller Plot wird gespeichert (Name wie oben angegen)
set output		

# Mit den folgenden Befehlen wird der plot nach dem Kompilieren als
# Bilddatei angezeigt. Ansonsten wird er lediglich abgespeichert.
set terminal wxt	
replot
pause -1
					

Das '#'-Zeichen kennzeichnet Kommentare, sodass gnuplot den Rest der Zeile überspringt.

Ein Kommando endet, sobald ein Zeilenumbruch erreicht wird. Man kann dies vermeiden, in dem man ein '\' verwendet. In dem Fall wird auch noch die nächste Zeile berücksichtigt. Das ist sinnvoll, wenn man z.B. viele Graphen in einem Diagramm unterbringen möchte, aber die Zeile mit dem plot-Befehl nicht unnötig lang werden soll.

Weitere fortgeschrittene Kommandos findet ihr hier.

Einbinden in Latex Dokumente

Um den mit gnuplot erzeugten plot in LaTeX einzubinden, kann der folgende Code verwendet werden. Dabei ist zu beachten, dass für den input-Dateinamen die Endung weggelassen wird.

\begin{figure}[!ht]		% [!ht] ist eine optionale Positionierungsangabe
	\centering			% zentrierte Ausrichtung
	\input{outputName}	% 'outputName' durch Namen der Ausgabedatei von
						% gnuplot ersetzen.			
	\caption{Hysteresekurve}	% Bildunterschrift
	\label{fig:plot_hysterese}	% Label für interne Verweise auf diese Abbildung
\end{figure}
					

Liegt die Ausgabedatei von gnuplot in einem Unterverzeichnis, so muss das import-Paket (siehe hier) verwendet werden.