Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using relative paths in gnuplot plot files

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.

like image 572
Jean Avatar asked Feb 16 '13 14:02

Jean


2 Answers

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
like image 163
andyras Avatar answered Sep 17 '22 12:09

andyras


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.

like image 34
Rhys Ulerich Avatar answered Sep 17 '22 12:09

Rhys Ulerich