24
votes

I have column-formatted data and I want to make a splot of the logarithm of the 5th column versus the first two columns. I have tried:

set pm3d map
splot "thing.file" u 1:2:log($5)

But I get the error

undefined value

How can I get gnuplot to plot a function of one of the columns of data?

3

3 Answers

33
votes

This works:

splot "thing.file" u 1:2:(log($5)) 

In general, if a term is defined by a function of a column in a data file rather than the column itself, there need to be parentheses around that term.

6
votes

To extend the solution, you can use multiple columns if your function requires multiple inputs: example:

plot "file" using 1:(x=$2, y=$3, f(x,y)) 

also works.

-7
votes

Taken from gnuplot's own FAQ , "Gnuplot has been and is a plotting program,not a data processing or mathematical program suite. Therefore gnuplot can't do that.".

You can run your data file through Octave or Matlab to generate the log files before plotting.