【发布时间】:2014-07-13 03:12:18
【问题描述】:
我经常使用一个发散的调色板映射到一个参数,该参数在靠近中间的某个地方有一个有趣的转折点。
不幸的是,可用的不同调色板 - 例如。来自 C. Brewer 的那些——似乎都在两个极端而不是在中间有饱和颜色,通常被定义为白色或浅灰色。这是一个说明的例子
文本标签指示的连续参数通过相关曲线的峰值达到最大值的最佳值。
在浅白色或灰色背景上(典型的 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 参数所做的操作(中心颜色可能不在参数范围的确切中心)
【问题讨论】:
-
colorRampPalette 不给你这个吗?例如
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 我已经用附录编辑了问题以澄清问题
标签: r ggplot2 color-palette colorbrewer