Ruprecht-Karls-Universität Heidelberg

This is an archive of our old website and not updated anymore

The current website can be found at conan.iwr.uni-heidelberg.de

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 Befehle. Zu allen Kommandos gibt es übrigens Hilfe in der gnuplot-Kommandozeile:
    
      help grid
      help logscale
    
  

Ausgabe in Dateien

Soll der Plot z.B. in eine eps-Datei exportiert 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
      
    
Die eps-Datei wird im aktuellen Verzeichnis 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 "//".
        //
        // 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.


Revision: 1438     Letzte Änderung: 2012-12-04 19