倒置发散的调色板

时间:2014-05-23 16:53:45

标签: r ggplot2 color-palette colorbrewer

我经常使用一个发散的调色板映射到一个参数,该参数在中间附近有一个有趣的转折点。

不幸的是,可用的发散调色板 - 例如来自C. Brewer的那些 - 在两个极端而不是在中间似乎都有饱和的颜色,通常被定义为白色或浅灰色。这是举例说明的一个例子

enter image description here

文本标签指示的连续参数通过最佳值,相关曲线的峰值达到最大值。

在浅白色或灰色背景(ggplot2的典型背景)上,我数据中最有趣的部分变得几乎看不见;我想要#34; pop"更多,而任何一方的价值逐渐远离中心逐渐消失,具有不同的色调。 是否有任何好的发散调色板的来源,中间的饱和度更强,两侧都会褪色?

这里有一个示例代码,用于说明,选择黑色作为中性点(我更喜欢不那么引人注目的东西,但很难让它与双方融合得很好)。

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)

enter image description here

修改:澄清,我熟悉colorRampPalettescale_colour_gradientn,我在

寻求建议

1-为此目的选择好的颜色;

2-定义将手工制作的调色板映射到变量的色阶,类似于scale_colour_gradient2mid参数的作用(中心颜色可能不在参数的确切中心)范围)

2 个答案:

答案 0 :(得分:11)

你可能喜欢玩choose_palette(),这是一个相对较新的优秀色彩空间包。

该软件包中的功能可让您对色彩空间的色调,色度和亮度特性进行完全且基本正交的控制。 choose_palette()为您提供了一种探索可能性的巨大空间的便捷方式。

这里是启动调色板选择器的代码,后面是GUI工具的屏幕截图。 (注意,为了使范围的中间比末端更暗,您将要交换发散调色板的默认亮度值,此处表示为&#34; L1&#34;和&#34 ; L2&#34;。)

library(colorspace)
library(grid)

custom <- choose_palette()

enter image description here

这里有一个例子,说明它在一分钟左右的时间内让我变成了两个人

custom <- diverge_hcl(20, h=c(-225,277), c=80, l=c(80,25))
grid.newpage()
grid.raster(custom, 0.25, 0.5, 0.4, 1)

enter image description here

包装及其背后的思想都很好地记录在包小插图(vignette("hcl-colors"))和发表在计算统计和数据分析杂志上的配套文章"Escaping RGBland: Selecting colors for statistical graphics" (Warning: pdf)中。

答案 1 :(得分:2)

我过去曾采取过一种方法来反转不同的斜坡(接近你所做的,但不完全正确)但是然后使用alpha通道来减弱斜坡的末端。

library(ggplot2)
pal <- brewer.pal(7,"PRGn")
custom <- c(rev(pal[1:3]),rev(pal[5:7]))
alpha  <-  c(seq(3),rev(seq(3)))/3
x <- 1:6
y <- rep(1)
MyDF <- data.frame(custom,alpha,x,y)
MyPlot <- ggplot(data = MyDF, aes(x = x, y = y, fill=custom, alpha=alpha)) + geom_bar(stat = "identity", color="white") + 
          scale_fill_identity() + scale_alpha_continuous(range = c(0.6, 1))
MyPlot

enter image description here

我所知道的唯一一篇讨论像这样的翻转颜色渐变是圆形数据图像,高分辨率圆形空间数据的图形 (Morphet & Symanzik, 2010)(没有在线版本,对不起)。基本上他们改变了价值和饱和度,以使斜坡的末端融合在一起 - 尽管他们对细节有点吝啬。这是他们的一张图的图像。

他们在现已弃用的包CircSpatial中有这些斜坡,所以你可以剔除他们从那里制造斜坡的方式。