Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
software:gnuplot [2013/05/28 15:52]
cyril [File outputs]
software:gnuplot [2024/04/19 09:54] (current)
cyril autotitle
Line 59: Line 59:
 set x2label "" set x2label ""
 set y2label "" set y2label ""
 +</code>
 +
 +  * Log scale.<code gnuplot>
 +set logscale x 2
 +set logscale y 10
 </code> </code>
  
Line 69: Line 74:
 set key left bottom set key left bottom
 set key 100,100 set key 100,100
 +</code>
 +
 +  * Automatic legend.<code gnuplot>
 +set key autotitle columnheader
 </code> </code>
  
Line 137: Line 146:
   * **every** Specifying lines to use (every 2 lines from line 50 to line 1050).<code gnuplot>   * **every** Specifying lines to use (every 2 lines from line 50 to line 1050).<code gnuplot>
 plot "data.dat" using 4:5 every 2::50::1050 plot "data.dat" using 4:5 every 2::50::1050
 +</code>
 +
 +  * **separator** Set the field separator:<code gnuplot>
 +set datafile separator ","
 </code> </code>
  
Line 159: Line 172:
 plot "data1.dat" using 4:5 lt rgb "red" plot "data1.dat" using 4:5 lt rgb "red"
 plot "data1.dat" using 4:5 lt rgb "#FF0000" plot "data1.dat" using 4:5 lt rgb "#FF0000"
 +</code>
 +
 +  * **palette** Colors as value.<code gnuplot>
 +set palette defined (0 "black", 1 "red")
 +plot "data1.dat" using 1:2:0 w p palette
 </code> </code>
  
Line 190: Line 208:
 </code> </code>
  
-  * **($1)** Arithmetics on columns.<code gnuplot>+  * **($1)** Arithmetics on columns data.<code gnuplot>
 plot "data1.dat" using 4:($5/2+14) plot "data1.dat" using 4:($5/2+14)
 # where $n means column n # where $n means column n
 +</code>
 +
 +  * **(column())** Arithmetics on columns indices.<code gnuplot>
 +plot i=1, "data1.dat" using 1:(column(i+1))
 </code> </code>
  
Line 203: Line 225:
  
 plot "gps.dat" using (rotation_x($3,$4)):(rotation_y($3,$4)) plot "gps.dat" using (rotation_x($3,$4)):(rotation_y($3,$4))
 +</code>
 +
 +  * **word()** Define array variables.<code gnuplot>
 +colors="red blue green"
 +print word(colors,3)
 </code> </code>
  
Line 214: Line 241:
 plot for [file in "run1.dat run2.dat run3.dat"] file using 1:2 plot for [file in "run1.dat run2.dat run3.dat"] file using 1:2
 </code><code gnuplot> </code><code gnuplot>
-plot for [i=1:3] run.dat using i+plot for [i=1:3] run.dat using i t sprintf("curve %s", columnheader(i))
 </code><code gnuplot> </code><code gnuplot>
 file(n) = sprintf("run_%d.dat",n) file(n) = sprintf("run_%d.dat",n)
Line 277: Line 304:
  
   * or anything else with shell commands...   * or anything else with shell commands...
 +
 +  * **fit** a function to data:<code gnuplot>
 +f(x) = a*x**2 + b*x + c
 +fit f(x) "file.dat" u 1:2 via a,b,c
 +plot "file.dat" u 1:2, f(x)
 +</code>
  
   * **sh** Passing arguments to a gnuplot script.   * **sh** Passing arguments to a gnuplot script.
-    * Putting the gnuplot commands in a shell script (be careful, if you forget a backslash in front of a gnuplot dollar the error message can seem mysterious):<code gnuplot|plot.gp>+    * (preferred method) Putting the gnuplot commands in a shell script (be careful, if you forget a backslash in front of a gnuplot dollar the error message can seem mysterious):<code gnuplot|plot.gp>
 #!/bin/sh #!/bin/sh
 ARGV1=$1 ARGV1=$1
Line 287: Line 320:
 </code><code sh> </code><code sh>
 ./plot.gp run.dat ./plot.gp run.dat
 +</code>You can also build a more complicated plot file with multiple steps (for multiplot or multiple curves):<code gnuplot>
 +#!/bin/sh
 +######
 +script_header=`cat<<EOF
 +set term wxt size 1024,768
 +set grid
 +plot \
 +EOF
 +`
 +script=$script_header
 +######
 +for host in $*; do
 +script_loop=`cat<<EOF
 +    "file_$host.log" u 4:5 w l lt rgb "blue" t "Position $host", \
 +EOF
 +`
 +script="$script$script_loop"
 +done
 +######
 +script_footer=`cat<<EOF
 +
 +pause -1
 +EOF
 +`
 +script="$script$script_footer"
 +
 +gnuplot<<EOF
 +$(echo "$script")
 +EOF
 </code> </code>
     * Writing a generic launcher script with environment variables (but difficulty to deal with relative paths):<code sh|gplaunch>     * Writing a generic launcher script with environment variables (but difficulty to deal with relative paths):<code sh|gplaunch>
Line 356: Line 418:
 !gzip -S z plot.svg !gzip -S z plot.svg
 quit quit
 +</code>
 +
 +
 +
 +  * Conditional output:<code gnuplot>
 +#!/bin/sh
 +
 +TITLE=plot
 +if [[ $1 == "pdf" ]]; then
 +    GTERM='set terminal postscript eps color "Times-Roman" 16 solid size 5,2.9 ; set output "$TITLE.eps"'
 +    OUTPUT='!epstopdf --outfile=$TITLE.pdf $TITLE.eps'
 +    GRIDCOLOR='lc rgb "grey"'
 +    shift
 +elif [[ $1 == "png" ]]; then
 +    GTERM='set terminal pngcairo font "Times,32" size 1830,1780 ; set output "$TITLE.png"'
 +    OUTPUT=''
 +    GRIDCOLOR=''
 +    shift
 +else
 +    GTERM='set term wxt size 1024,768'
 +    OUTPUT=''
 +    GRIDCOLOR=''
 +fi
 +
 +gnuplot -persist << EOF
 +
 +$GTERM
 +set grid $GRIDCOLOR
 +
 +# your plotting code (can be included using the load command)
 +
 +set output
 +    $OUTPUT
 +    
 +EOF
 +</code>
 +
 +===== Interactivity =====
 +
 +  * Keyboard bindings<code gnuplot>
 +bind "a" "plot x*x"
 +</code>
 +
 +  * Progressive display (but the plot is not interactive anymore)<code gnuplot>
 +plot "file.dat" u 1
 +while(1) { replot ; pause 0.2 }
 +</code>
 +
 +  * Pausing and resuming the progressive display for interactivity (only works with x11 terminal if started in interactive gnuplot shell... for wxt terminal the event processing loop -- wxt_gui.cpp:wxt_waitforinput function -- is not called during the update loop, but ctrl-c in the shell stops the update loop and allows plot interactivity afterwards, contrary to x11 term...).<code gnuplot>
 +set terminal x11
 +bind "c" "update=1-update ; while(update) { replot ; pause 0.1 }"
 +plot "file.dat" u 1
 +update=1
 +while(update) { replot ; pause 0.2 }
 </code> </code>
  
software/gnuplot.1369756364.txt.gz ยท Last modified: 2013/09/19 16:43 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0