[[Vorlage(Ausbaufähig, "Hier kann an allen Ecken und Enden noch vervollständigt und strukturiert werden.")]] [[Vorlage(Getestet, focal)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Paketquellen_freischalten/PPA: Verwenden eines PPAs] [optional) [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(2)]] [http://www.gnuplot.info/ Gnuplot] {en} ist ein mächtiger, skript- bzw. kommandozeilengesteuerter Funktionsplotter, welcher zwei- und dreidimensionale Plots erzeugen kann. Für die Einarbeitung in die Skriptsprache von Gnuplot sollte man etwas Zeit einplanen, jedoch kann man durch Herumspielen mit Beispielskripten schon in kurzer Zeit zu sehr ansprechenden Ergebnissen kommen. Es ist möglich, auf den Bildschirm dargestellte Funktionen auch interaktiv zu drehen und zoomen. Die Plots können auf dem Bildschirm dargestellt und/oder in verschiedenen Graphikformaten abgespeichert werden. Trotz seines Namens hat Gnuplot nichts mit dem GNU-Projekt zu tun. Gnuplot steht zwar unter einer freien Open Source-Lizenz, jedoch dürfen modifizierte Versionen nur als Patches zum Originalprogramm veröffentlicht werden. = Installation = [[Bild(gnuplot-in-aktion.png, 320, right)]] Folgende Pakete können installiert werden [1]: {{{#!vorlage Paketinstallation gnuplot, universe gnuplot-x11, universe, grafische Ausgabe gnuplot-doc, universe, Dokumentation }}} Zusätzlich gibt es mit '''gnuplot-nox''' (''universe'' auch eine Version, die ohne eine grafische Oberfläche verwendet werden kann. Mit '''gnuplot-qt''' (''universe'') steht auch eine [:Qt:]-Oberfläche zu Verfügung (die X11- und Wxt-Oberfläche aus'''gnuplot-x11''' sind in diesem Paket ebenfalls enthalten). == Deinstallation == Da die Pakete gegenseitig voneinander abhängen, können beim Update von gnuplot 4.6 (Ubuntu 16.04) auf gnuplot 5.2 (Ubuntu 18.04) Probleme dadurch entstehen, dass die Voraussetzungen nicht erfüllt werden können. Deshalb empfiehlt es sich, die Pakete zu deinstallieren, z.B. mit {{{#!vorlage Befehl sudo apt-get --purge remove gnuplot gnuplot-x11 gnuplot-data }}} und dann eine frische Neuinstallation durchzuführen. = Benutzung = Grundsätzlich kann gnuplot auf drei Arten betrieben werden: Interaktiv, im Batch-Modus oder über ein (grafisches) Frontend. Der interaktive Modus und der Batch-Modus können auch kombiniert werden. == Konsole == [[Bild(plot.png, 300, right)]] === Interaktiv === Durch den Befehl {{{#!vorlage Befehl gnuplot }}} wird Gnuplot interaktiv in einem Terminalfenster [3] (oder auf der Konsole) gestartet. Man kann nun Gnuplot-Befehle eingeben, welche zur Laufzeit abgearbeitet werden. Zum Testen kann man nun z.B. die folgende Zeile eingeben: {{{#!vorlage Befehl splot [-15:15.01] [-15:15.01] [-0.2:1] sin(sqrt(x**2+y**2)) / sqrt(x**2+y**2) }}} Es sollte sich nun ein Fenster mit einem einfachen, dreidimensionalen Funktionsplot öffnen. Mit der linken Maustaste kann man den Plot rotieren. Auch das Hinein- und Herauszoomen sowie Dehnen und Stauchen der einzelnen Achsen ist möglich, die Tastenbelegungen hierfür müssen jedoch u.U. erst konfiguriert werden. Weitere nützliche Befehle sind: || Befehl || Funktion || Hinweis || ||`set grid` || Hinzufügen von Hilfslinien im Koordinatensystem || Befehl vor dem Drucken der Funktion eingeben || || `plot` || drucken zweidimensionaler Funktionen || || || `set multiplot` || drucken mehrerer, zweidimensionaler Funktionen in einem Koordinatensystem || erst diesen Befehl eingeben, dann nacheinander die Funktionen || Zum Verlassen einer Gnuplot-Sitzung und Rückkehr zur Shell gibt man den Gnuplot-Befehl {{{#!vorlage Befehl exit }}} ein. === Stapelverarbeitung === Im Batch-Modus arbeitet Gnuplot eine Liste von Gnuplot-Befehlen ab, welche in der Regel in einer Textdatei gespeichert sind. Nach Abarbeitung aller Befehle beendet sich Gnuplot selbständig. Um die Gnuplot-Befehle, die in einer Testdatei namens '''test.plt''' gespeichert sind, im Batch-Modus abzuarbeiten, gibt man Gnuplot den Dateinamen als Argument mit: {{{#!vorlage Befehl gnuplot test.plt }}} Dieser Befehl eignet sich jedoch nicht zur Ausgabe von Funktionsplots auf dem Bildschirm. Da sich Gnuplot nach Abarbeiten aller Zeilen in der Datei '''test.plt''' schließt, wird auch das Fenster mit dem Funktionsplot sofort geschlossen. Besser ist es, wenn man Gnuplot durch die Option ``-persist`` mitteilt, dass geöffnete Fenster auch nach Beenden von Gnuplot offen bleiben sollen: {{{#!vorlage Befehl gnuplot -persist test.plt }}} Doch auch dieser Befehl ist nicht perfekt: Da sich Gnuplot schon beendet hat, kann man den Funktionsplot nicht interaktiv mit der Maus drehen. Eine Lösung ist es, Gnuplot wie folgt zu starten: {{{#!vorlage Befehl gnuplot test.plt - }}} Der Bindestrich steht hierbei für die Standardeingabe `stdin` (in der Regel die Tastatur). Mit diesem Befehl arbeitet Gnuplot erst die Datei '''test.plt''' ab und wechselt anschließend in den interaktiven Modus, in dem das Programm auf weitere Befehle von der Tastatur wartet. Um den Batchmodus zu testen, kann man die Datei '''test.plt''' z.B. mit folgendem Inhalt füllen: {{{ set view 130, 10, 1, 1 set samples 50, 50 set isosamples 50, 50 unset surface set title "Ein nettes Beispiel" set pm3d implicit at s set pm3d scansbackward splot sin(sqrt(x**2+y**2))/sqrt(x**2+y**2) }}} [[Bild(./bildschirmfoto.png, 200, right)]] Nach der Abarbeitung dieser Befehle durch Gnuplot sollte sich wieder ein Fenster mit einem dreidimensionalen Plot öffnen. Dieser sollte ähnlich aussehen wie auf nebenstehendem Screenshot dargestellt. === Stapelverarbeitung - Zugriff auf Umgebungsvariablen === Möchte man dem Skript '''test.plt''' zusätzliche Parameter von der Kommandozeile aus übergeben, so kann dies z.B. wie folgt erreicht werden: {{{ meine_datei=system("echo $FILE") plot meine_datei using 1:2 with line linewidth 3 notitle }}} Der Aufruf erfolgt dann z.B. mit {{{#!vorlage Befehl FILE=data01.txt gnuplot test.plt }}} Dies ist nützlich, falls man mehrere gleichartige Daten-Dateien mit der selben Gnuplot Batch-Datei verarbeiten möchte. === Benutzen von LaTeX-Schriftarten === Generell ist eine LaTeX-kompatible Ausgabe als picture-Umgebung mit {{{ set term latex }}} möglich, liefert jedoch mitunter nicht die gewünschten Ergebnisse die Formatierung betreffend. Es ist aber auch möglich, umgekehrt die Schriftart zu nutzen und dann die resultierende Ausgabe einzubetten. Standardmäßig benutzt LaTeX die Computer Modern-Schriftarten, zum Beispiel Computer Modern Roman (CMR). Mit dieser gibt es allerdings Encoding-Probleme, weshalb auf SFRM ausgewichen werden sollte (siehe Gnuplot 4.2-Handbuch vom 3. März 2007, Seite 181). Dies macht die Installation folgender Pakete notwendig: {{{#!vorlage Paketinstallation cm-super, universe [2], stellt die Schriftarten zur Verfügung groff, enthält das Tool pfbtops, transformiert pfb-Dateien PostScript-kompatibel }}} Nun kann man die Schriftart zum Beispiel in der PostScript-Ausgabe verwenden: {{{ set term postscript fontfile '/usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb' "SFRM1000" }}} In der Gnuplot-Konsole erscheint die Bestätigung {{{ Font file '/usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb' contains the font 'SFRM1000'. Location: /usr/share/texmf/fonts/type1/public/cm-super/sfrm1000.pfb }}} == Frontends == Programme wie * [:Maxima:] oder * [:Octave:] verwenden Gnuplot zur Ausgabe von Funktionen und fungieren somit als grafische Frontends. Über das Frontend kann man auch Optionen an Gnuplot übermitteln, welche z.B. die Ausgabeform oder die Beschriftung betreffen. Mitunter erfolgt der Einsatz über ein Frontend auch über zwei Ecken. So werden die beiden kommandozeilenbasierten Computeralgebra-Systeme Maxima und Octave häufig über ein grafisches Frontend wie z.B. wxMaxima bedient. = Konfiguration = Standardmäßig sind die auf dem Bildschirm ausgegebenen Funktionsplots optisch noch nicht so ansprechend. Man könnte sich z.B. statt einem grauen Fensterhintergrund einen weißen wünschen, das Fenster könnte etwas größer sein, die Linien des Funktionsplots etwas dicker, u.s.w. Außerdem möchte man vielleicht bevorzugte Einstellungen bei jedem Start direkt zur Verfügung haben. Dazu wird die Datei '''~/.gnuplotrc''' verwendet. Ein Beispiel für diese Konfigurationsdatei findet man unter '''/usr/share/gnuplot/gnuplot//gnuplotrc'''. Wobei '''''' ausgehend von der tatsächlich installierten Version zu ersetzen ist. Man kann die Datei einfach in das [:Homeverzeichnis:] kopieren, hier als Beispiel für Version 4.6: {{{#!vorlage befehl cp /usr/share/gnuplot/gnuplot/4.6/gnuplotrc ~/.gnuplotrc }}} Dort können alle Befehle oder Definitionen eingetragen werden, die das Programm beim Start ausführen soll. Einige Erläuterungen dazu finden sich auch in der Beispieldatei. ## FIME: Ist das wirklich noch aktuell? Alle Einstellungen in der .Xresources dürften auch über die .gnuplotrc vorgenommen werden können. -mrkramps Einstellungen, die das grafische X-System betreffen, kann man auch über die Datei '''~/.Xresources''' konfigurieren. Falls die Datei noch nicht existiert, legt man sie neu an. In diese Datei kann man z.B. folgende Befehle hinzufügen. Zeilen mit einem führenden Ausrufezeichen sind Kommentare und werden ignoriert. Für weitere mögliche Einstellungen sollte man die Dokumentation von Gnuplot lesen. {{{ ! gnuplot options ! modify this for a convenient window size gnuplot*geometry: 800x600 ! color options gnuplot*background: white gnuplot*textColor: black gnuplot*borderColor: black gnuplot*axisColor: black ! multiplicative factor for point styles gnuplot*pointsize: 2 ! line width options (in pixels) gnuplot*borderWidth: 2 gnuplot*axisWidth: 2 gnuplot*line1Width: 2 gnuplot*line2Width: 2 gnuplot*line3Width: 2 gnuplot*line4Width: 2 gnuplot*line5Width: 2 gnuplot*line6Width: 2 gnuplot*line7Width: 2 gnuplot*line8Width: 2 }}} Diese Einstellungen werden beim nächsten Start einer X-Sitzung eingelesen. Hierzu reicht es, sich auszuloggen und neu einzuloggen. Alternativ gibt man in einem Terminal [2] den Befehl {{{#!vorlage Befehl xrdb -load ~/.Xresources }}} ein. = Links = * [http://www.gnuplot.info/ Projektseite] {en} * [http://www.gnuplot.info/faq/index.html FAQ] {en} - Umfangreiche Hilfestellungen * [wikibooks_en:Gnuplot:Wikibook] - ein Wikibuch zu gnuplot # tag: Bildung, Mathematik, Wissenschaft, Grafik