spezial:gnuplot

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte Überarbeitung Beide Seiten der Revision
spezial:gnuplot [14.03.2013 19:57]
tquaritsch [Mehrere Funktionen zeichnen und formatieren]
spezial:gnuplot [14.03.2013 21:36]
tquaritsch
Zeile 54: Zeile 54:
 installiert werden kann.  installiert werden kann. 
  
-===== Der erste Graph =====+===== Tutorial ===== 
 + 
 +==== Der erste Graph ====
  
 Wir starten mit einem sehr einfachen Graphen: wir wollen die Funktion sin(x) im Bereich von 2 bis 2π darstellen und als PDF-Datei ausgeben.  Wir starten mit einem sehr einfachen Graphen: wir wollen die Funktion sin(x) im Bereich von 2 bis 2π darstellen und als PDF-Datei ausgeben. 
Zeile 88: Zeile 90:
     * Die Bereiche für die x-Achse und y-Achse werden auf 0 bis 2π und -1 bis 1 gesetzt     * Die Bereiche für die x-Achse und y-Achse werden auf 0 bis 2π und -1 bis 1 gesetzt
  
-===== Achsen-Formatierungen =====+==== Achsen-Formatierungen ====
  
 Bei Graphen von Winkelfunktionen zeichnet man die Achsen üblicherweise durch die Nulldurchgänge und markiert auf der x-Achse Vielfache von π. Dies können wir mit den folgenden Einstellungen erreichen: Bei Graphen von Winkelfunktionen zeichnet man die Achsen üblicherweise durch die Nulldurchgänge und markiert auf der x-Achse Vielfache von π. Dies können wir mit den folgenden Einstellungen erreichen:
Zeile 118: Zeile 120:
 {{ :spezial:beispiel2.png }} {{ :spezial:beispiel2.png }}
  
-===== Mehrere Funktionen zeichnen und formatieren =====+==== Mehrere Funktionen zeichnen und formatieren ====
  
 Natürlich können wir in gnuplot auch mehrere Funktionen (für Datenpunkte siehe unten) in ein Diagramm zeichnen. Außerdem stehen verschiedenste Formatierungsbefehle zur Verfügung um die Linien/Datenpunkte zu beeinflussen.  Natürlich können wir in gnuplot auch mehrere Funktionen (für Datenpunkte siehe unten) in ein Diagramm zeichnen. Außerdem stehen verschiedenste Formatierungsbefehle zur Verfügung um die Linien/Datenpunkte zu beeinflussen. 
Zeile 126: Zeile 128:
 <code gnuplot> <code gnuplot>
 plot 0.9*sin(x+0.5) title "Spannung" with linespoints linetype 1 linewidth 4 linecolor rgb "blue" pointtype 4 pointsize 1.5 pointinterval 19, \ plot 0.9*sin(x+0.5) title "Spannung" with linespoints linetype 1 linewidth 4 linecolor rgb "blue" pointtype 4 pointsize 1.5 pointinterval 19, \
-     0.7*cos(x) title "Strom" with linespoints linetype linewidth 3 linecolor rgb "#ff0000" pointtype 6 pointsize 1.5 pointinterval 19+     0.7*cos(x) title "Strom" with linespoints linetype linewidth 3 linecolor rgb "#ff0000" pointtype 6 pointsize 1.5 pointinterval 19
 </code> </code>
  
Zeile 142: Zeile 144:
     * ''linecolor rgb "blue"'': Linienfarbe blau     * ''linecolor rgb "blue"'': Linienfarbe blau
     * ''pointtype 4'': Markierungspunkt Nr. 4 (offenes Quadrat)     * ''pointtype 4'': Markierungspunkt Nr. 4 (offenes Quadrat)
 +    * ''pointsize 1.5'': Markierungspunkte werden um den Faktor 1.5 vergrößert
     * ''pointinterval 19'': Jeden 19. Punkt markieren     * ''pointinterval 19'': Jeden 19. Punkt markieren
   ** Danach sehen wir ein Komma ('','') -- damit können wir eine zweite (oder auch mehrere) Funktionen in ein Diagramm zeichnen. Da die Befehle relativ lang sind, können wir sie umbrechen, indem wir als letztes Zeichen in einer Zeile einen Backslash (''\'') notieren und den Befehl in der nächsten Zeile fortsetzen.    ** Danach sehen wir ein Komma ('','') -- damit können wir eine zweite (oder auch mehrere) Funktionen in ein Diagramm zeichnen. Da die Befehle relativ lang sind, können wir sie umbrechen, indem wir als letztes Zeichen in einer Zeile einen Backslash (''\'') notieren und den Befehl in der nächsten Zeile fortsetzen. 
 <note warning>Beim Umbrechen eines Befehls mittels ''\'' darf danach **kein** anderes Zeichen in der selben Zeile eingetippt werden (auch kein Leerzeichen!). Weiters dürfen keine Leerzeilen oder auskommentierte Zeilen (''# ...'') vor der nächsten relevanten Zeile stehen. </note> <note warning>Beim Umbrechen eines Befehls mittels ''\'' darf danach **kein** anderes Zeichen in der selben Zeile eingetippt werden (auch kein Leerzeichen!). Weiters dürfen keine Leerzeilen oder auskommentierte Zeilen (''# ...'') vor der nächsten relevanten Zeile stehen. </note>
-  ** Die zweite Funktion ''0.7*cos(x)'' ist ähnlich aufgebaut. Da hier die Formatierung ''with points'' verwendet wird, geben wir mittels ''pointtype 2'' und ''pointsize 1'' an, welche Markierungspunkte verwendet werden sollen und wie groß diese sind+  ** Die zweite Funktion ''0.7*cos(x)'' ist ähnlich aufgebaut, es wird nur eine andere Farbe bzwMarkierungspunkt verwendet. 
  
 <note important> <note important>
Zeile 167: Zeile 170:
 {{ :spezial:beispiel3.png }} {{ :spezial:beispiel3.png }}
  
-===== Abkürzungen und Benutzerdefinierte Stile =====+==== Abkürzungen und Benutzerdefinierte Stile ====
  
 +Man sieht bereits, dass der Plot-Befehl durch die Formatierungsangaben sehr lang werden kann. Es gibt dafür zwei Abhilfen:
  
 +  -- Sehr viele gnuplot-Befehle können abgekürzt werden. Das heißt, man kann beispielsweise statt ''linetype'' einfach ''lt'' schreiben, statt ''pointsize'' nur ''ps'' usw. 
 +  -- Man kann die verschiedenen Angaben zu Liniendicke/-farbe/-stil und Punkttyp/-größe/-abstand zu einem ''linestyle'' (''ls'') mittels ''set style line X'' zu einem Stil mit der Nummer X zusammenfassen, der dann an verschiedenen Stellen des gnuplot scripts verwendet werden kann. 
  
 +Damit wird unser Dokument wesentlich übersichtlicher:
 +
 +<code gnuplot>
 +set style line 1 lt 1 lw 4   lc rgb "blue"    pt 4 ps 1.5 pi 19
 +set style line 2 lt 1 lw 3   lc rgb "#ff0000" pt 6 ps 1.5 pi 19
 +
 +plot 0.9*sin(x+0.5) t "Spannung" w lp ls 1, \
 +     0.7*cos(x)     t "Strom"    w lp ls 2
 +</code>
 +
 +({{:spezial:beispiel4.gnu|Gesamtdokument zum Herunterladen}}, das Ergebnis sieht genau gleich aus). 
 +
 +==== Gitternetzlinien und Sonderzeichen ====
 +
 +Zu guter Letzt wollen wir noch Gitternetzlinien einblenden und außerdem das Wort "pi" in unseren Achsenbeschriftungen durch ein echtes π ersetzen. 
 +
 +Dazu müssen wir noch einige Optionen für das Terminal setzen:
 +
 +<code gnuplot>
 +set terminal pdf enhanced fsize 8 dashed dl 0.5
 +</code>
 +
 +Die Option ''enhanced'' ermöglicht uns die Verwendung von einigen erweiterten Schriftformatierungen wie z.B. Super- und Subskripten in ''x^2'' oder ''x_t'' in LaTeX-Syntax. Außerdem ermöglicht es das Umschalten von Schriftart und Schriftgröße mit Hilfe der Syntax ''{/Schriftname=Schriftgroesse Text}'' (z.B. ''{/Helvetica=20 G}'' für ein G in 20pt Helvetica). 
 +
 +Mit der Angabe ''fsize 8'' vergrößern wir Schriften im Diagramm auf eine Grundgröße von 8pt. 
 +
 +''dashed dl 0.5'' ermöglicht uns die Verwendung von strichlierten/punktierten "Linetypes" und skaliert die Länge der Striche mit dem Faktor 0.5.
 +
 +Damit können wir nun einen Linestyle für die Gitternetzlinien erstellen sowie diese aktivieren. Mit Hilfe der "Symbol" Schriftart können wir außerdem das π einfügen:
 +
 +<code gnuplot>
 +set style line 3 lt 2 lw 0.1 lc rgb "#888888"
 +set style line 4 lt 1 lw 4   lc rgb "#000000"
 +
 +set grid xtics ytics mytics ls 3
 +
 +set xzeroaxis ls 4
 +set yzeroaxis ls 4
 +
 +set mytics 5
 +
 +set format x "%.1P {/Symbol p}"
 +</code>
 +
 +Die Befehle im Detail:
 +
 +  ** Linestyle 3 ist als strichlierte Linie (linetype 1) der Dicke 0.1 und grauer Farbe definiert. Mit Linestyle 4 wollen wir die Achsen etwas dicker zeichen (linewidth 4). 
 +  **  Mittels ''set grid'' aktivieren wir die Gitternetzlinien an den Hauptunterteilungen der x- und y-Achse (''xtics'' und ''ytics'') sowie auf den Nebenunterteilungen der y-Achse (''mytics'' = minor ytics) mit Linestyle 3. 
 +  **  Über ''set xzeroaxis ls 4'' und dem zugehörigen Befehl für die y-Achse verwenden wir Linestyle 4 für die Achsenlinien. 
 +  ** ''set mytics 5'' gibt an, dass es auf der y-Achse 5 Nebenunterteilungen pro Hauptunterteilung gibt. 
 +  ** ''{/Symbol p}'' fügt das π-Symbol mit Hilfe der "Symbol"-Schriftart ein. 
 +
 +Damit sind wir am Ende unseres gnuplot-Grundlagen-Tutorials. Hier das Endergebnis und {{:spezial:beispiel_fertig.gnu|das endgültige gnuplot script}}:
 +
 +
 +{{ :spezial:beispiel_fertig.png }}
 +
 +===== LaTeX-Integration =====
 +
 +<note important>
 +Hier ist zur Zeit eine Baustelle!
 +</note>
 +
 +===== Tipps & Tricks =====
 +
 +<note important>
 +Hier ist zur Zeit eine Baustelle!
 +</note>
spezial/gnuplot.txt · Zuletzt geändert: 28.11.2013 19:53 von tquaritsch