Gnuplot 结合cbrange的用户定义调色板
假设我在gnuplot 4.6.2中有下图 以最低限度的生产力为例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的强度一样 我试过两件事,正如你
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
的?如果你把它作为一个答案,它会对我有用。