Gnuplot is a command-line driven open-source plotting utility, with many
features such as fitting, and 3D plotting available. You can install it on
ubuntu systems by typing sudo apt install gnuplot
. The homepage is
gnuplot.sourceforge.net, and a detailed
manual for the latest release is also
available. Gnuplot is
also readily scriptable. This allows you, for example, to incorporate it into a
bash script to automatically produce a file containing a plot of your results
after your calculation has finished.
To open gnuplot, simply type gnuplot
in a terminal. You will see some
information regarding the version of gnuplot that has started, and finally a
gnuplot prompt: gnuplot>
. You can enter various commands here to generate
and save plots.
For example:
plot sin(x)
- This will plot the sin function. The x values will range from -10 to +10 by default and the y range will be automatically chosen to be -1 to 1.
plot cos(x), x + 0.1*x**2
- This will plot the cosine function in addition to the function y=x-0.1*x^2 .
plot "plot/example.dat"
- Plots the values listed in the example file
plot/example.dat
.
- Plots the values listed in the example file
set title "My Results"
- This sets a title for the plot.
set xrange [-1:1]
- Sets the range of the x-axis in the plot.
yrange
can be set similarly.
- Sets the range of the x-axis in the plot.
set xlabel "Position (pm)"
- Sets the label for the x-axis in the plot.
ylabel
can be set similarly.
- Sets the label for the x-axis in the plot.
replot
- After changing the plot by e.g. adding a title, it is necessary to redraw
the output plot. The
replot
command repeats the last plot command.
- After changing the plot by e.g. adding a title, it is necessary to redraw
the output plot. The
Outputing to a file
To output a plot to for example a pdf file, you need to set the gnuplot “terminal” appropriately (the terminal setting determines the type of output generated by gnuplot), set an output filename, and redraw the plot. Typically many different terminals are available which allow ouput to e.g. postscript, png, gif formats.
For example, to save a default plot of a sin function to a pdf:
set terminal pdf
set output "sin_plot.pdf"
plot sin(x)
Fitting
We can also define and fit functions within gnuplot. For example, to fit a
quadratic to the example data in plot/example.dat
we can do the following
(here I assume gnuplot has been started from within the plot
directory):
f(x)=a+b*x+c*x**2
- This defines the function in terms of a set of parameters.
fit f(x) "example.dat" via a,b,c
- This will do a least squares fit, and output the final parameter values along with standard errors.
- Note if no initial values for the parameters are specified, gnuplot will
start each at 1. You can specify initial values before running the
fit
command as e.g.a=-1;b=-1;c=0.5
. It is particularly important to give good initial guesses when fitting non-polynomial functions. plot "example.dat", f(x)
- This will generate a plot of the data points together with the fit curve. You can also use this to try to find good initial guesses for parameters manually when fitting more complex functions.
- A summary of the fit results is automatically saved in the file
fit.log
.
Scripting
One can create scripts as a list of gnuplot commands entered in the same way as
would be done manually. Then gnuplot scriptname
will execute the script and
exit. An example script to perform a quadratic to the data in example.dat
and
generate a pdf plot of the data compared with the fit is given in
plot/example.gpl
:
f(x)=a+b*x+c*x**2
a=-1;b=-1;c=0.5;
fit f(x) "example.dat" via a,b,c
set title "Example Gnuplot Plot"
set xlabel "Position (Bohr)"
set ylabel "Energy (Hartree)"
set term pdf
set output "example-gp.pdf"
plot "example.dat" with lines title "Results", f(x) title "Quadratic fit"
Try entering the plot
directory and running this as gnuplot example.gpl
.
You will see information on the fit output directly to the terminal, and the
files fit.log
and example-gp.pdf
will be generated. You can view the pdf
with the evince
document viewer application that is installed by default on
ubuntu systems: evince example.pdf
.