根据数据文件中z值的范围定义调色板颜色

时间:2014-10-29 08:07:28

标签: range gnuplot color-palette

假设我有一个x y z列的数据文件,如下所示:

  -3.063052922487259      -3.141592741012573       401.3000000000000    
  -3.063052922487259      -3.063052922487259       1.290000000000000    
  -3.063052922487259      -2.984513103961945       0.920000000000000       

  -2.984513103961945      -3.141592741012573       0.100000000000000    
  -2.984513103961945      -3.063052922487259       10.80000000000000    
  -2.984513103961945      -2.984513103961945       1001.290000000000       

  -2.905973285436630      -2.984513103961945       514.4000000000000    
  -2.905973285436630      -2.905973285436630       131.0300000000000    
  -2.905973285436630      -2.827433466911316       129.3300000000000

z列中的值范围将定义数据点的颜色。例如,在z列上,如果值介于0.0和0.3之间,则数据点的颜色将设置为蓝色;如果在0.3和1之间,数据点的颜色将设置为橙色;如果在400到1000之间,数据点的颜色将设置为海军。

所以我写了一些像这样的代码:

set xrange [0:15]
set yrange [0:-15]
set zrange [0:1400]
set cbrange [0.001:1400]
set palette defined ( 0 "goldenrod", 0.3 "blue", 1 "orange", 2 "cyan", 4 "yellow", 10 "green", 20 "pink", 50 'gold', 100 'purple', 400 'navy', 1000 "red")
set palette maxcolors 11
unset key
unset surface
splot "DATA.dat" using 1:2:3 with image

哪个不起作用。有帮助吗?

进一步更新: 我真的想解释清楚为什么不起作用,但Stack Overflow不允许我进一步解释,因为它们要求我有10个声望点才能发布图像结果。所以由于缺乏声誉,我无法发布我的结果。但我确实修改了我的数据集,所以你现在可以看到xy-data是等距离的。

所以我只用文字而不是图像描述问题,这就是颜色框错了。根据我的代码,400到1000之间应该是海军蓝(只有一种颜色)。但是图像上的彩盒显示,在400到1000之间,有5种不同的海军色,从浅海军到深海军蓝。我怎么才能在400到1000之间只有一种海军蓝?

1 个答案:

答案 0 :(得分:1)

maxcolors选项在您的情况下无法正常工作,因为它只会离散底层颜色渐变。您可以使用test palette命令查看实际调色板的外观:

set palette defined ( 0 "goldenrod", 0.3 "blue", 1 "orange", 2 "cyan", 4 "yellow", 10 "green", 20 "pink", 50 'gold', 100 'purple', 400 'navy', 1000 "red")
set palette maxcolors 11
test palette

Wrong palette definition

您还必须记住,调色板定义中使用的数字不是cb - 轴上的绝对值,但是值(在您的情况下从0到1000)映射到实际值cbrange(0.001到1400)。

为了获得具有恒定颜色值的区域,请执行以下操作:

set palette defined (0 "goldenrod", \
                     0 "blue", 0.3 "blue", \
                     0.3 "orange", 1 "orange", \
                     1 "cyan", 2 "cyan", \
                     2 "yellow", 4 "yellow", \
                     4 "green", 10 "green", \
                     10 "pink", 20 "pink", \
                     20 "gold", 50 "gold", \
                     50 "purple", 400 "purple", \
                     400 "navy", 1000 "navy", \
                     1000 "red", 1400 "red")
test palette

Correct palette definition