In a gnuplot instruction file, is it possible to indicate relative paths for the data source files and for the output? The paths must be relative to the gnuplot instruction file path.
Context I have large data files containing between 12 to 50 x-y curves that I process using PHP scripts and gnuplot in order to provide nice graphic views of the data. The views are generated using gnuplot and for each view, I have one .csv file, one gnuplot plotting instruction file and one graphic.
Everything is nicely sorted into folders. Usually, in a folder, the graphics are at the top level, then in a source/subfolder are the .csv and gnuplot files.
Sometimes, I need to slightly change the graphic. So I edit the gnuplot file, and I plot it again by calling gnuplot directly. Everything is fine, until I move the folders elsewhere. Which I do frequently.
Yes, you can specify relative paths in the gnuplot file:
set output '../path/to/outputs/output.eps'
plot '../path/to/csv/input.csv'
works fine. If you want to specify paths as arguments to the script, I recommend a bash wrapper:
#!/bin/bash
# argument 1 is path to input
# argument 2 is path to output
gnuplot << EOF
set terminal ...
set output '$2/output'
plot '$1/input1.csv', \
'$1/input2.csv' ...
EOF
I've stumbled onto using loadpath
to get data loaded relative to one's $HOME
:
set loadpath system('readlink -f ~/.gnuplot.scripts')
Of course, this is for un*x systems.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With