Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gnuplot: Set palette colours for absolute values

I plot a 2D function using splot with a colour palette:

set zrange [0.5:1.5] 
set palette defined ( 0 "green", 1 "black", 2 "red" )
splot "HTSG_PeakPositions_thetaI080.gnuplot" using 3:1:5 title 'Relative Peak Positions' with pm3d

This somehow works; however, I'd like the graph to be black exactly at value 1.0 and coloured appropriately if it diverges from this level. The problem is that the palette is defined relatively to the range of min:max values contained in the plot and not to absolute values. The zrange option doesn't seem to affect this behaviour. Is there a way to create the absolute mapping?

like image 589
ivokabel Avatar asked Mar 25 '26 20:03

ivokabel


1 Answers

The color range is affected by set cbrange:

set cbrange [0.5:1.5]
set palette defined ( 0 "green", 1 "black", 2 "red" )
splot "HTSG_PeakPositions_thetaI080.gnuplot" using 3:1:5 title 'Relative Peak Positions' with pm3d

If you want some kind of autoscaling symmetric to 1.0, you can use the stats command to determine the color range before plotting:

stats "HTSG_PeakPositions_thetaI080.gnuplot" using 5 nooutput
cb_val = (abs(STATS_min - 1) < abs(STATS_max - 1) ? abs(STATS_max - 1) : abs(STATS_min - 1))
set cbrange [1 - cb_val : 1 + cb_val]
like image 174
Christoph Avatar answered Mar 29 '26 04:03

Christoph