Gnuplot 结合cbrange的用户定义调色板

Gnuplot 结合cbrange的用户定义调色板,gnuplot,Gnuplot,假设我在gnuplot 4.6.2中有下图 以最低限度的生产力为例 set xrange [-2:10]; set yrange [-2:10]; set size ratio -1 set pm3d map set palette defined (-20 "#0060ad", 0 "#ffffff", 100 "#dd181f" ) set cbrange [-20:100] splot x*y 然而,这并不完全是我想要的。我想要-20的值,和+20的强度一样 我试过两件事,正如你

假设我在gnuplot 4.6.2中有下图

以最低限度的生产力为例

set xrange [-2:10];
set yrange [-2:10];

set size ratio -1
set pm3d map

set palette defined (-20 "#0060ad", 0 "#ffffff", 100 "#dd181f" )
set cbrange [-20:100]

splot x*y
然而,这并不完全是我想要的。我想要-20的值,和+20的强度一样

我试过两件事,正如你在下面看到的

如果我将
调色板中的
-20
cbrange
更改为
-100
,我会得到左边的数字。这基本上就是我想要的图表。但是,如果我将
cbrange
设置为
[-20:100]
,同时将调色板保持在
-100
,我会得到右边的图。这不是我想要的,我希望颜色框从
-20
开始。我怎样才能做到这一点


因此,正如我所理解的,您希望定义-100、0和+100处的颜色,但只使用-20和+100之间的部分

目前,除了手动在-100处的深蓝色和0处的白色之间进行线性插值以获得浅蓝色之外,我看不到任何其他选项,在您的例子中,这是
#ccdfef

red = int(255*0.8) = 0xcc
green = int(0x60 + (0xff-0x60)*0.8) = 0xdf
blue = int(0xad + (0xff - 0xad)*0.8) = 0xee
问题是,给定给
集合调色板定义的数值不是绝对值,而是始终映射到整个cbrange的相对值

set xrange [-2:10]
set yrange [-2:10]

set size ratio -1
set pm3d map

set palette defined (-20 "#ccdfef", 0 "#ffffff", 100 "#dd181f" )
set cbrange [-20:100]
set isosamples 100
splot x*y notitle

我不太清楚你想要什么。你说,-20和+20的强度应该是相同的。+20到+100的值是多少?定义了
设置调色板(-20”#0060ad)、0”#ffffff、20”#dd181f、100”#dd181f”)
在-20和+20处有类似的强度,但+20和+100也相等。@Christoph,我的意思是相同的强度,-20浅蓝色,+20浅红色。基本上,地图应该看起来像我展示的第二个图中的左边。然而,颜色框现在从-100开始(因为我在调色板中有它)。我想要的是,配色箱正在运行
[-20:100]
。然而,如果我这样做,我会得到正确的数字。好的,我明白了。目前,除了手动插值深蓝色以获得-20的实际值外,我看不到任何其他选项,然后必须明确设置该值。您在
调色板定义中给出的整数范围始终映射到整个cbrange。您可以使用
设置调色板函数
,但在您的情况下,只插入浅蓝色更容易:
设置cbrange[-20:100];设置调色板定义(-20“#ccdfef”、0“白色”、100“#dd181f”)
@Christoph谢谢。这实际上是我也尝试过的,插值。你是如何想出
#ccdfef
的?如果你把它作为一个答案,它会对我有用。