8

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

不幸的是,可用的不同调色板(例如来自 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)

在此处输入图像描述

编辑:澄清一下,我熟悉colorRampPaletteand scale_colour_gradientn,我寻求建议

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

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

4

2 回答 2

11

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

该软件包中的功能为您提供了对色彩空间的色调、色度和亮度特性的完整且很大程度上正交的控制。choose_palette()为您提供了一种便捷的方式来探索打开的巨大可能性空间。

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

library(colorspace)
library(grid)

custom <- choose_palette()

在此处输入图像描述

这是一个例子,它让我在玩它大约一分钟内得到了两个

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)

在此处输入图像描述

软件包及其背后的思想都在vignette("hcl-colors")软件包插图

于 2014-05-23T17:31:48.913 回答
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

在此处输入图像描述

我知道的唯一一篇讨论像这样的翻转色带的文章是圆形数据图像,高分辨率圆形空间数据的图表 (Morphet & Symanzik,2010)(没有在线版本,抱歉)。基本上,它们会改变值和饱和度以使斜坡的末端合并在一起——尽管它们在细节上有点吝啬。这是他们的一张图表的图像。

他们在现已弃用的包CircSpatial中有这些坡道,因此您可以从那里剔除他们是如何制作坡道的。

于 2014-05-23T18:17:20.477 回答