Home
Main website
Display Sidebar
Hide Ads
Recent Changes
View Source:
GnuPlot
Edit
PageHistory
Diff
Info
LikePages
The old-school Unix way of generating graphs from numeric data. It has very verbose documentation, but unfortunately it lacks in practical examples. !!!Hints !! Output format By default, gnuplot creates [X11] windows and draws the graphs to your [XServer]. But that's no good for embedding it into a report, so do: <verbatim> set output "filename.ps" set term postscript color [...] plot [your plot command] </verbatim> If you use [LaTeX], you can get gnuplot to output a LaTeX picture instead of embedding a graphic in your report: <verbatim> set output "foo.tex" set term latex [...] plot [your plot command] </verbatim> Note that your latex file should "\usepackage{latexsym}" so that it knows about several shapes that gnuplot outputs (such as \Diamond and \Box). Try "help set term latex" for more info. !!Vertical Lines The default is to give a function that calculates "y" for various values of "x", but that makes it difficult to get a vertical line. Do <verbatim> set parametric # vertical line plot 0, t # horizontal plot t, 0 # or just plain old plot 5 </verbatim> !!Multiple columns from the same data file <verbatim> set pointsize 2 # plot [xrange] [yrange] function, function, .... # do columns 3,4 and 6, using the first column for x plot [0:2] [0:100] "input" using 1:3 with linespoints title "3rd", \ "input" u 1:4 w lp t "4th", "input" u 1:6 w lp t "6th" </verbatim> As you see, command names can be shortened, which can make it hard to understand what is happening :) !!Multiple plots on a single page Say you want to put 2 graphs on a single A4 bit of paper to print it out <verbatim> set terminal postscript portrait set size 1,1 # The documentation recommends you set to full size first set origin 0,0 set output "output.ps" set multiplot # Enter multiplot mode. Your prompt will become 'multiplot>' set size 1,0.5 set origin 0,0 plot "input" using 1:2 with lines set size 1,0.5 set origin 0,0.5 plot "input" using 1:3 with lines unset multiplot # Exit multiplot mode </verbatim> !! Plotting timeseries data <verbatim> set xdata time set timefmt "%H:%M:%S" set xrange ["8:00:00":"18:00:00"] </verbatim> Timestamps in your data file will now be recognised. Gaps in your time data will show up as gaps in the graph. !! Normal distribution Define the following: <verbatim> invsqrt2pi=1.0/sqrt(2.0*pi) normal(x,mu,sigma)=invsqrt2pi/sigma*exp(-0.5*((x-mu)/sigma)**2) </verbatim> Now, if you want a normal distribution with mean 13 and SD 1, you can go <verbatim> plot normal(x,13,1) </verbatim> !! Force a scale <verbatim> set xrange[0:10] set yrange[50:100] </verbatim>
One page links to
GnuPlot
:
PerlOneLiners