Benutzung von GnuPlot
detailliert ist alles nachzulesen im gnuplot-Handbuch (gzipped)
alles in Kürze findest Du hier: http://www.duke.edu/~hpgavin/gnuplot.html
kompliziertere Tricks gibts bei: http://t16web.lanl.gov/Kawano/gnuplot/index-e.html
die wichtigsten Befehle im Überblick
mit gnuplot startest Du den interaktiven Modus - alles laesst sich aber natuerlich auch per Skript reingeben (gnuplot name_des_skripts.plt)
[einen großen Teil der folgenden Auflistung habe ich http://ieee.uow.edu.au/documents/gnuplot/gnuplot entnommen ...]
set xrange [-5:5]
set yrange [-2:4]
set grid / set nogrid - die Rasterung
set key / set nokey - die Legende
set autoscale ueberschreibt alle xrange- und yrange-Festlegungen
set size {{no}square | ratio <r> | noratio} {<xscale>,<yscale>}
set output "filename" - aufeinanderfolgende Plots landen in derselben Datei, bis ein anderer terminal ausgewählt wird
help
exit
set term TYPE legt die Ausgabe fest:
- dutzende Formate: postscript, png, x11, windows, latex, corel, fig, ...
die komplette Liste siehst Du mit set terminal
load <gnuplotfile> - laed eine Datei mit gnuplot Befehlen & fuehrt diese aus
der plot-Befehl
- der erste Parameter ist eine Funktion oder ein Dateiname (in Anführungsstrichen)
- ein leerer Dateiname (also nur die Anfuehrungsstriche) entsprechen der letzten benutzten Datei
- danch kann Folgendes erscheinen:
index
- es gibt diese drei Varianten, um "Zeilen" aus einer Datendatei auszuwählen:
- N - nur den n-ten Datensatz
- N:M - alle Datensätze von n bis m
- N:P:M - von n ausgehend jeden p-ten Datensatz bis m
- es gibt diese drei Varianten, um "Zeilen" aus einer Datendatei auszuwählen:
every
Syntax: <nowiki>PunktIncrement:BlockIncrement:StartPunkt:StartBlock:EndPunkt:EndBlock</nowiki>
jedes einzelne davon kann auch wegfallen - dann muessen fuehrende : aber stehen bleiben (abschliessende : dagegen muessen weggelassen werden)
- Blöcke werden in der Datendatei durch Leerzeilen getrennt
- innerhalb jedes Blockes können (in Abständen) also Punkte ausgewählt werden
smooth
- Werte: unique, csplines, acsplines, bezier oder sbezier
unique ersetzt alle Punkte, die an derselben x-Stelle dargestellt werden würden durch einen Punkt mit gemitteltem y-Wert
- die Anderen berechnen die jeweilige Kurve zwischen den Endpunkten
- in jedem Fall werden die Punkte nicht mehr einzeln dargestellt, sondern verbunden
using
- dies ist der gebräuchlichste Parameter
X:Y bedeutet, dass Spalte Y gegen Spalte X dargestellt werden soll
- die Zählung der Spalten beginnt hier mit Eins
- eine Null als Spaltennummer ergibt die Zeilennummer jedes Datensatzes
- dabei können auch Berechnungen verwendet werden:
0:2 bzw. :2 - Spalte zwei wird über der Datensatz-Nummer aufgetragen
1:($2+$3) - die Summe von Spalte 2 und 3 wird gegen Spalte 1 dargestellt
1:($3>10 ? $2 : 1/0) - falls der Wert in Spalte 3 größer als 10 ist, wird Spalte 2 ausgegeben, ansonsten wird der Punkt ignoriert (wegen Division durch Null)
($0/1000):$2 - die Datensatz-Nummern werden um den Faktor 1000 verkleinert
die Werte werden über die C-Funktion scanf eingelesen - dazu können Parameter in Anführungsstrichen übergeben werden
t
- anschliessend folgt die Beschriftung der Datenreihe fuer die Legende in Anfuehrungsstrichen
- mehrere Kurven in den selben Graphen bekommst Du folgendermassen:
plot "data/input1.csv" using 0:1 ,\\
"" using 0:2 ,\\
"data/input2.csv" using 0:1
die Reihenfolge der plot-Parameter ist relevant: "index, every, using, smooth" - die Anderen musst Du selbst ausprobieren ...
Achsenformatierung
mit set xtics laesst verschiedene Varianten zu:
X - in Schritten von X
X,Y - ab X in Schritten von Y (bis unendlich)
X,Y,Z - ab X in Schritten von Y bis Z
(1,2,4,8,16,32) - die gegebenen Stellen beschriften
("text_fuer_wert_1" 1, "text_fuer_wert_2" 2, "text_fuer_wert_3" 3) - Texte speziellen Werten zuordnen
set xtics rotate ???
- ansonsten:
set logscale x
set format x "<format_string>"
- auch mit single-quote, um ein paar Ersetzungen zu unterdrücken
- Formatbeispiele:
%f - Fließkomma (z.B.: %+-8.2f -> "+123.00 ")
%e / %E - exponential
%x / %X - hexadezimal
%o / %O - oktal
%T - Potenz zur Basis 10
%S - wissenschaftliche Potenz
%P - Vielfaches von Pi
ansonsten: siehe gnuplot-Handbuch, Kapitel 34.16 - Format
Beschriftungen (labels)
Syntax: set label {<tag>} {"<label-text>"} {at <position>} {<justification>} {{no}rotate} {font "<name><,size>"} set nolabel {<tag>}
- tag
Zahl, die das Label identifiziert (fuer nachträgliche <nowiki>Änderung/Löschung</nowiki>); kann weggelassen werden
- label-text
für Zeilenumbrüche, wie üblich, "\n" (oder "\\" für tex u.ä.)
- position
zwei- oder dreimensionale Koordinaten, eventuell mit dem Präfix first, second, graph oder screen
- justification
left, right oder center
Beispiele
response-time beim Silimann 6
set terminal postscript eps color set yrange [1:4] set ytics 1,0.25,4 set format y "%4.2f" set grid set xlabel "TIME [us]" set ylabel "VOLTAGE [V]" set nokey set size square set title "RESPONSE TIME FOR +0,1V STEP" set output "F1.ps" plot "/tikal/public/RUNS/Silimann6/Messdaten/response_time/Rohdaten/importierbares_format/F1/D01.CSV" every ::900::6900 using ($0/1000):1 smooth unique
kleine Sachen
- durchgezogene geglättete Linien mit manueller Legenden-Bennenung
- plot "scanpfad.dat" using 3:($4*1000) smooth csplines t "analog-positiv" w lines
- die Legende außerhalb des Graphen in eine Box stecken
- set key outside box
- die Achsenrichtung umkehren (weiterhin automatische Auflösung)
- set xrange [*:*] reverse
- die Achsenbeschriftung um 90 Grad drehen
- set xtics rotate ("Eingangspegel-Aenderung" 0, "Scanpfad-Aktivierung" 1, "Dauer-Refresh" 2, "unbelastet" 3)
- ein mehrzeilige Beschriftung
unix-gemaess durch Einfügen eines Zeilenumbruchs \n oder \\ fuer tex o.ä.
- encapsulated postscript
set terminal postscript eps color (sogar mit Farbe)
- Ausgabe in mehreren Formaten
nach dem Plot-Befehl eine neue Ausgabedatei (set output) und das Format (set terminal) festlegen, anschließend: replot
- Funktionen
plot sin(x)*x - alle weiteren Funtionen unter help functions
- png-Bildformat
- folgende Parameter stehen zur Verfügung: {small | medium | large} {{no}transparent} {monochrome | gray | color}; Standard ist kleine Schrift, keine Transparenz und viel Farbe
- das Aussehen einzelner Bildpunkte veraendern
- set data style [lines|...]
- Punkte auslassen
plot "datei.csv" every 10 using 0:1
- Sonderzeichen
durch das Uebliche \NNN, wobei NNN eine Oktal-Zahl darstellt - die dazugehoerigen Zeichen lassen sich auf der Konsole beispielsweise durch folgende Eingabe anzeigen: i=0; while [ $i -lt 8 ]; do j=0; while [ $j -lt 8 ]; do k=0; while [ $k -lt 8 ]; do echo -e "$i$j$k\t\\$i$j$k"; k=$(($k+1)); done; j=$(($j+1)); done; i=$(($i+1)); done|less - nun einfach per Schraegstrich (slash) nach dem geuenschten Zeichen suchen; z.B. entspricht das Grad-Zeichen (von "Grad Celsius") dem Code \260
aktualisierte Grafik
;Es soll alle zehn Sekunden eine Logdatei ausgelesen und die Grafik dazu aktualisiert werden.
- scriptdatei erstellen
- dann starten
- $gnuplot scriptdatei