203 lines
12 KiB
HTML
203 lines
12 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|||
|
<HTML><HEAD><TITLE>Systemausfall: senseLab-Wiki: GnuPlotHowTo</TITLE>
|
|||
|
<META NAME='KEYWORDS' CONTENT='Gnu, Plot, How, To'/>
|
|||
|
</HEAD><BODY BGCOLOR="black" text="#00dd00">
|
|||
|
<div class=wikiheader><h1><a href="senselab?back=GnuPlotHowTo">GnuPlotHowTo</a></h1><a href="senselab?StartSeite" class=wikipagelink>StartSeite</a> | <a href="senselab?RecentChanges" class=wikipagelink>RecentChanges</a> | <a href="senselab?action=edit&id=GnuPlotHowTo" class=wikipageedit>Edit text of this page</a> | <a href="senselab?action=editprefs">Preferences</a> | <a href="senselab?action=upload">Upload</a> | <A HREF=/wiki/senselab/cgi-bin/wiki2html.sh?konvert&GnuPlotHowTo>DocBook-Konvertierung</A><br>
|
|||
|
<hr class=wikilineheader></div><div class=wikitext><H1>Benutzung von GnuPlot</H1>
|
|||
|
|
|||
|
<p>
|
|||
|
detailliert ist alles nachzulesen im <a href="ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot.pdf.gz">[gnuplot-Handbuch]</a> (gzipped)
|
|||
|
<p>
|
|||
|
alles in K<>rze findest Du hier: <a href="http://www.duke.edu/~hpgavin/gnuplot.html">http://www.duke.edu/~hpgavin/gnuplot.html</a>
|
|||
|
<p>
|
|||
|
<H2>die wichtigsten Befehle im <20>berblick</H2>
|
|||
|
|
|||
|
mit <strong>gnuplot </strong> startest Du den interaktiven Modus - alles laesst sich aber natuerlich auch per Skript reingeben (<strong>gnuplot name_des_skripts.plt</strong>)
|
|||
|
<p>
|
|||
|
[einen gro<72>en Teil der folgenden Auflistung habe ich <a href="http://ieee.uow.edu.au/documents/gnuplot/gnuplot">http://ieee.uow.edu.au/documents/gnuplot/gnuplot</a> entnommen ...]
|
|||
|
<p>
|
|||
|
<UL >
|
|||
|
<li> <strong>set xrange [-5:5]</strong>
|
|||
|
<li> <strong>set yrange [-2:4]</strong>
|
|||
|
<li> <strong>set grid</strong> / <strong>set nogrid</strong> - die Rasterung
|
|||
|
<li> <strong>set key</strong> / <strong>set nokey</strong> - die Legende
|
|||
|
<li> <strong>set autoscale</strong> ueberschreibt alle xrange- und yrange-Festlegungen
|
|||
|
<li> <strong>set size {{no}square | ratio <r> | noratio} {<xscale>,<yscale>}</strong>
|
|||
|
<li> <strong>set output "filename"</strong> - aufeinanderfolgende Plots landen in derselben Datei, bis ein anderer <strong>terminal</strong> ausgew<65>hlt wird
|
|||
|
<li> <strong>help</strong>
|
|||
|
<li> <strong>exit</strong>
|
|||
|
<li> <strong>set term TYPE</strong> legt die Ausgabe fest:
|
|||
|
<UL >
|
|||
|
<li> dutzende Formate: postscript, png, x11, windows, latex, corel, fig, ...
|
|||
|
<li> die komplette Liste siehst Du mit <strong>set terminal</strong>
|
|||
|
</UL>
|
|||
|
<li> <strong>load <gnuplotfile></strong> - laed eine Datei mit gnuplot Befehlen & fuehrt diese aus
|
|||
|
</UL>
|
|||
|
<p>
|
|||
|
<H2>der plot-Befehl</H2>
|
|||
|
|
|||
|
<p>
|
|||
|
<UL >
|
|||
|
<li> der erste Parameter ist eine Funktion oder ein Dateiname (in Anf<6E>hrungsstrichen)
|
|||
|
<UL >
|
|||
|
<li> ein leerer Dateiname (also nur die Anfuehrungsstriche) entsprechen der letzten benutzten Datei
|
|||
|
</UL>
|
|||
|
<li> danch kann Folgendes erscheinen:
|
|||
|
<UL >
|
|||
|
<li> <strong>index</strong>
|
|||
|
<UL >
|
|||
|
<li> es gibt diese drei Varianten, um "Zeilen" aus einer Datendatei auszuw<75>hlen:
|
|||
|
<UL >
|
|||
|
<li> N - nur den n-ten Datensatz
|
|||
|
<li> N:M - alle Datens<6E>tze von n bis m
|
|||
|
<li> N:P:M - von n ausgehend jeden p-ten Datensatz bis m
|
|||
|
</UL>
|
|||
|
</UL>
|
|||
|
<li> <strong>every</strong>
|
|||
|
<UL >
|
|||
|
<li> Syntax: <strong>PunktIncrement:BlockIncrement:StartPunkt:StartBlock:EndPunkt:EndBlock</strong>
|
|||
|
<li> jedes einzelne davon kann auch wegfallen - dann muessen fuehrende <strong>:</strong> aber stehen bleiben (abschliessende <strong>:</strong> dagegen muessen weggelassen werden)
|
|||
|
<li> Bl<42>cke werden in der Datendatei durch Leerzeilen getrennt
|
|||
|
<li> innerhalb jedes Blockes k<>nnen (in Abst<73>nden) also Punkte ausgew<65>hlt werden
|
|||
|
</UL>
|
|||
|
<li> <strong>smooth</strong>
|
|||
|
<UL >
|
|||
|
<li> Werte: unique, csplines, acsplines, bezier oder sbezier
|
|||
|
<li> <strong>unique</strong> ersetzt alle Punkte, die an derselben x-Stelle dargestellt werden w<>rden durch einen Punkt mit gemitteltem y-Wert
|
|||
|
<li> die Anderen berechnen die jeweilige Kurve zwischen den Endpunkten
|
|||
|
<li> in jedem Fall werden die Punkte nicht mehr einzeln dargestellt, sondern verbunden
|
|||
|
</UL>
|
|||
|
<li> <strong>using</strong>
|
|||
|
<UL >
|
|||
|
<li> dies ist der gebr<62>uchlichste Parameter
|
|||
|
<li> <strong>X:Y</strong> bedeutet, dass Spalte Y gegen Spalte X dargestellt werden soll
|
|||
|
<li> die Z<>hlung der Spalten beginnt hier mit Eins
|
|||
|
<li> eine Null als Spaltennummer ergibt die Zeilennummer jedes Datensatzes
|
|||
|
<li> dabei k<>nnen auch Berechnungen verwendet werden:
|
|||
|
<UL >
|
|||
|
<li> <strong>0:2</strong> bzw. <strong>:2</strong> - Spalte zwei wird <20>ber der Datensatz-Nummer aufgetragen
|
|||
|
<li> <strong>1:($2+$3)</strong> - die Summe von Spalte 2 und 3 wird gegen Spalte 1 dargestellt
|
|||
|
<li> <strong>1:($3>10 ? $2 : 1/0)</strong> - falls der Wert in Spalte 3 gr<67><72>er als 10 ist, wird Spalte 2 ausgegeben, ansonsten wird der Punkt ignoriert (wegen Division durch Null)
|
|||
|
<li> <strong>($0/1000):$2</strong> - die Datensatz-Nummern werden um den Faktor 1000 verkleinert
|
|||
|
</UL>
|
|||
|
<li> die Werte werden <20>ber die C-Funktion <strong>scanf</strong> eingelesen - dazu k<>nnen Parameter in Anf<6E>hrungsstrichen <20>bergeben werden
|
|||
|
</UL>
|
|||
|
<li> <strong>t</strong>
|
|||
|
<UL >
|
|||
|
<li> anschliessend folgt die Beschriftung der Datenreihe fuer die Legende in Anfuehrungsstrichen
|
|||
|
</UL>
|
|||
|
</UL>
|
|||
|
<li> mehrere Kurven in den selben Graphen bekommst Du folgendermassen:
|
|||
|
</UL><PRE>
|
|||
|
plot "data/input1.csv" using 0:1 ,\
|
|||
|
"" using 0:2 ,\
|
|||
|
"data/input2.csv" using 0:1
|
|||
|
</PRE><UL>
|
|||
|
<li> die Reihenfolge der <strong>plot</strong>-Parameter ist relevant: "index, every, using, smooth" - die Anderen musst Du selbst ausprobieren ...
|
|||
|
</UL>
|
|||
|
<p>
|
|||
|
<p>
|
|||
|
<H2>Achsenformatierung</H2>
|
|||
|
|
|||
|
<UL >
|
|||
|
<li> mit <strong>set xtics</strong> laesst verschiedene Varianten zu:
|
|||
|
<UL >
|
|||
|
<li> <strong>X</strong> - in Schritten von X
|
|||
|
<li> <strong>X,Y</strong> - ab X in Schritten von Y (bis unendlich)
|
|||
|
<li> <strong>X,Y,Z</strong> - ab X in Schritten von Y bis Z
|
|||
|
<li> <strong>(1,2,4,8,16,32)</strong> - die gegebenen Stellen beschriften
|
|||
|
<li> <strong>("text_fuer_wert_1" 1, "text_fuer_wert_2" 2, "text_fuer_wert_3" 3)</strong> - Texte speziellen Werten zuordnen
|
|||
|
<li> <strong>set xtics rotate ???</strong>
|
|||
|
</UL>
|
|||
|
<li> ansonsten:
|
|||
|
<UL >
|
|||
|
<li> <strong>set logscale x</strong>
|
|||
|
<li> <strong>set format x "<format_string>"</strong>
|
|||
|
<UL >
|
|||
|
<li> auch mit single-quote, um ein paar Ersetzungen zu unterdr<64>cken
|
|||
|
<li> Formatbeispiele:
|
|||
|
<UL >
|
|||
|
<li> <strong>%f</strong> - Flie<69>komma (z.B.: <strong>%+-8.2f</strong> -> "+123.00 ")
|
|||
|
<li> <strong>%e</strong> / <strong>%E</strong> - exponential
|
|||
|
<li> <strong>%x</strong> / <strong>%X</strong> - hexadezimal
|
|||
|
<li> <strong>%o</strong> / <strong>%O</strong> - oktal
|
|||
|
<li> <strong>%T</strong> - Potenz zur Basis 10
|
|||
|
<li> <strong>%S</strong> - wissenschaftliche Potenz
|
|||
|
<li> <strong>%P</strong> - Vielfaches von Pi
|
|||
|
<li> ansonsten: siehe <a href="ftp://ftp.gnuplot.info/pub/gnuplot/gnuplot.pdf.gz">[gnuplot-Handbuch]</a>, Kapitel 34.16 - <em>Format</em>
|
|||
|
</UL>
|
|||
|
</UL>
|
|||
|
</UL>
|
|||
|
</UL>
|
|||
|
<p>
|
|||
|
<H2>Beschriftungen (labels)</H2>
|
|||
|
|
|||
|
Syntax:
|
|||
|
<PRE >
|
|||
|
set label {<tag>} {"<label-text>"} {at <position>} {<justification>} {{no}rotate} {font "<name><,size>"}
|
|||
|
set nolabel {<tag>}
|
|||
|
</PRE>
|
|||
|
<p>
|
|||
|
<DL >
|
|||
|
<dt>tag<dd> Zahl, die das Label identifiziert (fuer nachtr<74>gliche <20>nderung/L<>schung); kann weggelassen werden
|
|||
|
<dt>label-text<dd> f<>r Zeilenumbr<62>che, wie <20>blich, "<strong>\n</strong>" (oder "<strong>\\</strong>" f<>r tex u.<2E>.)
|
|||
|
<dt>position<dd> zwei- oder dreimensionale Koordinaten, eventuell mit dem Pr<50>fix <strong>first</strong>, <strong>second</strong>, <strong>graph</strong> oder <strong>screen</strong>
|
|||
|
<dt>justification<dd> <strong>left</strong>, <strong>right</strong> oder <strong>center</strong>
|
|||
|
</DL>
|
|||
|
<p>
|
|||
|
<p>
|
|||
|
<H2>Beispiele</H2>
|
|||
|
|
|||
|
<p>
|
|||
|
<H3>response-time beim Silimann 6</H3>
|
|||
|
|
|||
|
<p>
|
|||
|
<PRE >
|
|||
|
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
|
|||
|
</PRE>
|
|||
|
<p>
|
|||
|
<H3>kleine Sachen</H3>
|
|||
|
|
|||
|
<DL >
|
|||
|
<dt>durchgezogene gegl<67>ttete Linien mit manueller Legenden-Bennenung<dd> plot "scanpfad.dat" using 3:($4*1000) smooth csplines t "analog-positiv" w lines
|
|||
|
<dt>die Legende au<61>erhalb des Graphen in eine Box stecken<dd> set key outside box
|
|||
|
<dt>die Achsenrichtung umkehren (weiterhin automatische Aufl<66>sung)<dd> set xrange [*:*] reverse
|
|||
|
<dt>die Achsenbeschriftung um 90 Grad drehen<dd> set xtics rotate ("Eingangspegel-Aenderung" 0, "Scanpfad-Aktivierung" 1, "Dauer-Refresh" 2, "unbelastet" 3)
|
|||
|
<dt>ein mehrzeilige Beschriftung<dd> unix-gemaess durch Einf<6E>gen eines Zeilenumbruchs <strong>\n</strong> oder <strong>\\</strong> fuer tex o.<2E>.
|
|||
|
<dt>encapsulated postscript<dd> <strong>set terminal postscript eps color</strong> (sogar mit Farbe)
|
|||
|
<dt>Ausgabe in mehreren Formaten<dd> nach dem Plot-Befehl eine neue Ausgabedatei (<strong>set output</strong>) und das Format (<strong>set terminal</strong>) festlegen, anschlie<69>end: <strong>replot</strong>
|
|||
|
<dt>Funktionen<dd> <strong>plot sin(x)*x</strong> - alle weiteren Funtionen unter <strong>help functions</strong>
|
|||
|
<dt>png-Bildformat<dd> folgende Parameter stehen zur Verf<72>gung: {small | medium | large} {{no}transparent} {monochrome | gray | color}; Standard ist kleine Schrift, keine Transparenz und viel Farbe
|
|||
|
<dt>das Aussehen einzelner Bildpunkte veraendern<dd> set data style [lines|...]
|
|||
|
<dt>Punkte auslassen<dd> <strong>plot "datei.csv" every 10 using 0:1</strong>
|
|||
|
<dt>Sonderzeichen<dd> durch das Uebliche <strong>\NNN</strong>, wobei NNN eine Oktal-Zahl darstellt - die dazugehoerigen Zeichen lassen sich auf der Konsole beispielsweise durch folgende Eingabe anzeigen: <strong>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</strong> - nun einfach per Schraegstrich (slash) nach dem geuenschten Zeichen suchen; z.B. entspricht das Grad-Zeichen (von "Grad Celsius") dem Code <strong>\260</strong>
|
|||
|
</DL>
|
|||
|
<p>
|
|||
|
<H3>aktualisierte Grafik</H3>
|
|||
|
|
|||
|
;Es soll alle zehn Sekunden eine Logdatei ausgelesen und die Grafik dazu aktualisiert werden.
|
|||
|
<DL >
|
|||
|
<dt>scriptdatei erstellen<dd>
|
|||
|
</DL><UL>
|
|||
|
<li>plot "/var/log/temperatures1", "/var/log/temperatures2"
|
|||
|
<li>pause 10
|
|||
|
<li>reread
|
|||
|
</UL><DL>
|
|||
|
<dt> dann starten<dd> $gnuplot scriptdatei
|
|||
|
</DL>
|
|||
|
</div><hr class=wikilinefooter>
|
|||
|
<div class=wikifooter><form method="post" action="senselab" enctype="application/x-www-form-urlencoded">
|
|||
|
<a href="senselab?StartSeite" class=wikipagelink>StartSeite</a> | <a href="senselab?RecentChanges" class=wikipagelink>RecentChanges</a> | <a href="senselab?action=edit&id=GnuPlotHowTo" class=wikipageedit>Edit text of this page</a> | <a href="senselab?action=editprefs">Preferences</a> | <a href="senselab?action=upload">Upload</a> | <A HREF=/wiki/senselab/cgi-bin/wiki2html.sh?konvert&GnuPlotHowTo>DocBook-Konvertierung</A><br>
|
|||
|
<a href="senselab?action=edit&id=GnuPlotHowTo" class=wikipageedit>Edit text of this page</a> | <a href="senselab?action=history&id=GnuPlotHowTo">View other revisions</a><br>Last edited May 20, 2004 15:13 by pD9EB7D6D.dip.t-dialin.net <a href="senselab?action=browse&diff=1&id=GnuPlotHowTo">(diff)</a><br>Search: <input type="text" name="search" size="20" /><input type="hidden" name="dosearch" value="1" /><br>Administration: <a href="senselab?action=pagelock&set=1&id=GnuPlotHowTo">Lock page</a> | <a href="senselab?action=delete&id=GnuPlotHowTo&confirm=0">Delete this page</a> | <a href="senselab?action=editbanned">Edit Banned List</a> | <a href="senselab?action=maintain">Run Maintenance</a> | <a href="senselab?action=editlinks">Edit/Rename pages</a> | <a href="senselab?action=editlock&set=0">Unlock site</a><div></div>
|
|||
|
</form></div></body></html>
|