Gnuplot is a command-line driven graphing utility that is available for many different operating systems.
Gnuplot is a powerful program that can be used to generate publication-quality figures. Here, we are going to introduce only a small subset of its features. If you are interested to learn more, have a look to the documentation.
gnuplot
starts the interactive Gnuplot console. This are some of the commands we are going to need:
plot sin(x) # use plot for 2d plots splot sin(x)*sin(y) # use splot for 3d plots plot 'spectrum.ener' using 1:4 # plot column 1 as x and column 4 as y replot 'spectrum.ener' using 1:($3+$5) title 'Total energy' set xlabel "time steps" set xrange [0:10] replot # redo the plot with current settings set terminal x11 enhanced font "arial,20" # increase font size help <command> # gnuplot has a very useful integrated help exit # leave gnuplot (loosing unsaved graphs)
Now you are ready to plot some actual data.
spectrum.ener
in the intro
folder contains results from a molecular dynamics simulation.
Later you will want to save your graphs in order to use them in your reports. This is done as follows:
set terminal png # we want to create a .png image set output "graph.png" # with filename "graph.png" replot # plot with current settings, directly into file "graph.png" set terminal x11 # switch back to plotting on screen
Gnuplot is not just a plotting utility, it can also perform fits.
Say, we have a data set data.dat
, which contains $x$ in the first column and some computed $f(x)$ in the second column.
We want to fit a function $f(x)=ax^2$ to this data set. In Gnuplot, this would be achieved by:
f(x) = a*x*x # Define function to be fitted a = 1 # initial guess for a fit f(x) "data.dat" using 0:1 via a
Finally, once you have figured out which commands you need to create the plot you want, it is a good idea to write these commands to a file, say script.gp
. This has the advantage that gnuplot can re-create your graph in an instant. On the bash terminal type:
gnuplot script.gp # let gnuplot perform the commands in 'script.gp' gnuplot # alternative: start gnuplot load 'script.gp' # and load script from within gnuplot
This makes it very quick and easy to change details in the plot at a later point in time. Proficient gnuplot users will often start by writing the file, run it through gnuplot and then adjust the remaining details.