我想采用gnuplot的默认(pm3d默认)调色板,并在X处放置一个白色值,并将任何> = X作为白色,但其余的(< X)仍然使用默认值进行分配。
比如说我有0到100之间的值。我只对0到30的值感兴趣,所以我做了以下几点:
set cbrange [0:30]
现在,值使用默认调色板均匀分布在0到30之间,但值30.001到100都是黄色。我想在我的调色板顶部放置一个白色块,在颜色条上显示这样的东西
0:30使用默认调色板均匀分布 30:31白色
并且在实际绘图中,将值> = 30作为白色。
我知道我可以设置定义的值,但我似乎无法将默认的rgbformula 7,5,15和定义的点30 = white组合在一起。
有什么想法吗?
答案 0 :(得分:4)
您可以使用set palette functions
定义自己的基于功能的调色板。键入show palette rgbformulae
会显示用于默认调色板(7,5,15
)的函数的定义:
gnuplot> show palette rgbformulae
* there are 37 available rgb color mapping formulae:
0: 0 1: 0.5 2: 1
3: x 4: x^2 5: x^3
6: x^4 7: sqrt(x) 8: sqrt(sqrt(x))
9: sin(90x) 10: cos(90x) 11: |x-0.5|
12: (2x-1)^2 13: sin(180x) 14: |cos(180x)|
15: sin(360x) 16: cos(360x) 17: |sin(360x)|
...
所以你可以定义自己的红色,绿色和蓝色功能,在调色板的一端给出白色:
r(x) = sqrt(x)
g(x) = x**3
b(x) = (x == 1 ? 1 : sin(2*pi*x))
set palette functions r(gray),g(gray),b(gray)
为了演示,这是一个完整的示例脚本,其中-10以上的所有值都是白色:
r(x) = sqrt(x)
g(x) = x**3
b(x) = (x == 1 ? 1 : sin(2*pi*x))
set palette functions r(gray),g(gray),b(gray)
set isosamples 100
set pm3d map
set cbrange [-200:-10]
set cbtics -200,40
set cbtics add ('> -10' -10)
splot -x**2 - y**2 notitle
4.6.5的输出是: