lucian
lucian

Reputation: 434

plot multiple curves with color based on a color map in GNUPLOT

Here is the problem I am having with GNUPLOT: I have data files with two columns each (one for the voltage the other for the current) and each obtained for a certain temperature (which is specified in their name something like iv_300K.dat, iv_290K.dat etc.).

Now what I want is to plot each data file on the same graph and each plot to have a colour based on the file name (I would like to show you a figure I made with Mathematica but it seems that my reputation is too low...)

So lets say I have iv_300K.dat, iv_250K.dat and iv_160K.dat I would like to have three curves coloured first red, second green-ish and third blue, but based on the temperature information in the file name.

I am thinking something similar to what I did in Mathematica:

ColorData["DarkRainbow"][Rescale[T, {160, 350}]]

Where "DarkRainbow" is a colormap and Rescale[x,{min,max}] gives x rescaled to run from 0 to 1 over the range min to max (according the Mathematica documentation).

So Rescale[250,{160,350}] = 0.473684

At the moment in GNUPLOT I am using the following for testing purposes:

plot for [i=350:160:-10] 'iv_'.i.'.K.dat' using 1:2 with lines title sprintf("".i." K")

but I can't get the colours to map the temperature.

Any help is appreciated!

Upvotes: 1

Views: 910

Answers (1)

Christoph
Christoph

Reputation: 48390

Use linecolor palette frac to select a color from a palette based on an value in the range [0:1]:

set cbrange [160:350]
set style data lines
plot for [i=350:160:-10] 'iv_'.i.'.K.dat' using 1:2 linecolor palette frac (i-160.0)/(350.0-160.0) title sprintf("%dK", i)

Upvotes: 1

Related Questions