Gnuplot
In den Übungen werden wir häufig Daten plotten müssen. Sehr einfach kann
dies mit dem Programm gnuplot
geschehen. Das Programm kann in der Linux-Konsole mit
gnuplot
gestartet werden. Es gibt übrigens auch eine Windows-Variante. Wenn man
gnuplot verwenden will, muss man einfach nur die Daten aus seinem Programm
in eine Datei schreiben (oder auf den Bildschirm und dann umleiten).
Erste Schritte
Um einen ersten Plot zu machen, kann man einfach einmal folgendes ausprobieren (nachdem man die gnuplot-Kommandozeile wie oben angegeben gestartet hat):
plot sin(x) title "sin(x)"
replot cos(x)
set grid
set logscale x
set xlabel "x"
set ylabel "f(x)"
set title "Plots von sinus und cosinus"
set xrange [-pi:pi]
set key
replot
unset logscale x
replot
Dies sind einige der wichtigsten Kommandos, mit denen man schon recht
variabel plotten kann. Zu allen Kommandos gibt es übrigens Hilfe in der
gnuplot-Kommandozeile:
help grid
help logscale
Ausgabe in Dateien
Soll der Plot in eine Datei geschrieben werden, kann man dies wie folgt tun: (wiederum in der gnuplot-Kommandozeile):
set grid
set xlabel "x"
set ylabel "f(x)"
set title "Plot des sinus"
set xrange [-3*pi:3*pi]
set key
plot sin(x) title "sin(x)"
set terminal postscript enhanced color
set out "sinus.eps"
replot
set terminal x11
Damit wird ins aktuelle Verzeichnis eine eps-Datei mit einem Plot
erstellt. Statt eps-Dateien kann man durch Angabe eines geeigneten
terminals (z.B. set term png) andere Formate plotten. Mit set term x11
wechselt man wieder zur Bildschirmausgabe. Alle Terminals haben
verschiedene Optionen, die den Plot beeinflussen. Mehr dazu mit der
eingebauten Hilfe help terminal.
Plotten von Datenfiles
Datenfiles sollten aus mehreren Spalten bestehen. Angenommnen, wir haben für eine Rechnung die Problemgrösse, Zeit und Geschwindigkeit gemessen. Dann kann das Datenfile wie folgt aussehen:
// Kommentar im Datenfile. Gnuplot erkennt die Kommentare durch Setzen
// von set datafile commentschars "x".
//
// N t v
1 0.001 1090
10 0.02 1088
50 0.035 1023
100 0.12 789
500 0.23 560
1000 2.38 452
10000 16.76 445
Dann kann man in gnuplot auswählen, welche Spalte geplottet werden sollen.
Beispiel:
set datafile commentschar "//"
set grid
set xlabel "N [Byte]"
set ylabel "t [ms]"
set title "Zeit-N Plot"
set key
plot "test.dat" using 2:1 with linepoints lw 3 ps 2
set terminal postscript enhanced color
set out "t-N.eps"
replot
set terminal x11
set title "Geschwindigkeit-N Plot"
set ylabel "v [MFLOP/s]"
plot "test.dat" using 3:1 with lines lw 3 ps 2
set terminal postscript enhanced color
set out "v-N.eps"
replot
Hier würden also zwei eps-Dateien mit Zeit-N und Geschwindigkeits-N-Diagramm
geplottet. Die Achsenbeschriftungen werden nach Bedarf angepasst.
Die Kommentare des Datenfiles werden durch den ersten Befehl erkannt.