March 2nd, 2015 | 5 Comments
If you are a regular gnuplot user you most probably want to reuse some common settings. I normally avoid it on this blog to have easy scripts that run as standalone files, but during my work I use a lot of small config files.
Let us start with the Bessel function example from the last blog entry. As you can see in Fig. 1, it is a 2D plot, including axes, a grid, line colors, and definitions of higher order Bessel functions. All of those could be easily stored in small config files and reused in other plots.
As an example I will start with the axes. Here, I have four different config files, called
noborder.cfg, which do exactly what their names would suggest. Here are the first and last file:
# xyborder.cfg set style line 101 lc rgb '#808080' lt 1 lw 1 set border 3 front ls 101 set tics nomirror out scale 0.75 set format '%g'
# noborder.cfg set border 0 set style line 101 lc rgb '#808080' lt 1 lw 1 unset xlabel unset ylabel set format x '' set format y '' set tics scale 0
In the main plotting file I then just have to load the setting I like to have and I’m done. The same can be done for adding a grid, the right line color definitions and the extra Bessel functions leading to the following excerpt from the main plotting file:
# set path of config snippets set loadpath './config' # load config snippets load 'dark2.pal' load 'xyborder.cfg' load 'grid.cfg' load 'mathematics.cfg'
set loadpath command tells gnuplot the directory where it can find all the configuration snippets. If you want to see an overview, look at my gnuplot configuration snippets and at the collection of palettes and line colors.
If you want to include more complicated settings, you have to use the
macro setting of gnuplot. Fig. 2 is a reproduction of an earlier entry plotting a vector field with arrows. It included an lenghty definition of how to plot these arrows. If you want to do it several time and define the arrows in the same way every time you should also put it into a config file, this time as a variable (macro). In our example it looks like
color_arrows = 'u ($1-dx($1,$2)/2.0):($2-dy($1,$2)/2.0):(dx($1,$2)):(dy($1,$2)):\ (v($1,$2)) with vectors head size 0.08,20,60 filled lc palette'
In the main file the only thing we have then to do is
set macros load 'noborder.cfg' load 'moreland.pal' load 'arrows.cfg' # [...] plot '++' @color_arrows
Important is the first line that enables the use of macros in gnuplot which is disabled by default.