我经常使用一个散发色谱,映射到一个参数上,在中间附近有一个有趣的转折点。
不幸的是,可用的散发色谱——如C. Brewer的那些——似乎都在两个极端具有饱和的颜色,而不是在中间,通常定义为白色或浅灰色。下面是一个例子以供参考。
文本标签指示的连续参数通过一个最优值,其中相关曲线的峰值达到最大值。
在一个明亮的白色或灰色背景(typical for ggplot2)下,我的数据的最有趣的部分几乎变得看不见了;我希望它能更加突出,而两侧的值则从中心逐渐淡化,并且具有不同的色调。是否有任何良好的散发色谱资源,其中间更强烈地饱和,两侧逐渐淡化?
以下是一段样本代码,以黑色作为中性中点(我更喜欢某些不那么戏剧性的东西,但很难使两侧都与之融合)。
require(RColorBrewer)
grid.newpage()
grid.raster(brewer.pal(7,"PRGn"), 0.25, 0.5, 0.4, 1)
custom <- c(brewer.pal(3,"BuPu"), "black", rev(brewer.pal(3,"BuGn")))
grid.raster(custom, 0.75, 0.5, 0.4, 1)
编辑:澄清一下,我熟悉colorRampPalette
和scale_colour_gradientn
,我需要的是:
1- 选择适合此目的的好颜色;
2- 定义一个颜色比例尺,将手工制作的调色板映射到变量上,类似于scale_colour_gradient2
对mid
参数的处理(中央颜色可能不在参数范围的正中间)。
par(bg = 'grey97', xpd = NA);plot(1:1000, pch = 19, cex = 5, col = colorRampPalette(c('lightgreen','black','mediumpurple1'))(1000))
。如果你想要更浅的颜色,只需要重复颜色即可:plot(1:1000, pch = 19, cex = 5, col = colorRampPalette(c('lightgreen','lightgreen','black','mediumpurple1','mediumpurple1'))(1000))
。 - rawr