我经常使用一个发散的调色板,它映射到一个参数,这个参数在中间的某个地方有一个有趣的转折点。
不幸的是,现有的不同调色板--例如来自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-为此目的选择好的颜色;
定义一个颜色刻度,将手工制作的调色板映射到一个变量,类似于scale_colour_gradient2
对mid
参数所做的操作(中心颜色可能不在参数范围的精确中心)。
发布于 2014-05-23 09:31:48
您可能喜欢使用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 (vignette("hcl-colors")
)和(警告: pdf)的配套文章中,文章发表在“计算统计和数据分析”杂志上。
发布于 2014-05-23 10:17:20
我过去做过的一种方法是逆转分化的坡道(接近你所做的,但不完全是这样),然后使用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中有这些坡道,所以您可以选择它们是如何从那里生成坡道的。
https://stackoverflow.com/questions/23834653
复制