2014-05-23 66 views
7

很多時候我會使用一個發散的調色板映射到一個參數上,這個參數在中間某個地方有一個有趣的轉折點。反轉發散調色板

不幸的是,可用的發散調色板 - 例如,那些來自C.布魯爾的人 - 在兩個極端而不是在中間似乎都有飽和的顏色,通常被定義爲白色或淺灰色。下面是用於說明

enter image description here

由文本標籤指示的連續參數穿過其中相關聯的曲線的峯值達到最大值的最佳值的一個例子。

在淺白色或灰色背景(通常爲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) 

enter image description here

編輯:澄清,我熟悉colorRampPalettescale_colour_gradientn,我尋求

1-選擇好顏色用於此目的的建議;

2-定義顏色分的手工製作的調色板映射到一個變量,類似於scale_colour_gradient2mid參數確實(中央顏色可能不是在該參數範圍的確切中心)

+2

不colorPampPalette給你這個?例如'par(bg ='grey97',xpd = NA); plot(1:1000,pch = 19,cex = 5,col = colorRampPalette(c('lightgreen','black','mediumpurple1'))( (1:1000,pch = 19,cex = 5,col = colorRampPalette(c('lightgreen','lightgreen','black',''))'如果你想要更淺的陰影,只需重複顏色:'plot 'mediumpurple1','mediumpurple1'))(1000))' – rawr

+0

@rawr我編輯了一個附錄的問題,以澄清問題 – baptiste

回答

10

您可能喜歡玩choose_palette(),這是一個相對較新的優秀色彩空間包。

該軟件包中的函數爲您提供了對色彩空間的色調,色度和亮度特性的完整且基本上正交的控制。 choose_palette()爲您提供了一個便捷的方式來探索開放的可能性的巨大空間。

下面是啓動調色板選擇器的代碼,後面是GUI工具的屏幕截圖。 (請注意,要使範圍的中間部分比兩端更暗,您需要交換髮散調色板的默認亮度值,這裏標記爲「L1」和「L2」。)

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

謝謝,這是一個不錯的工具。 (我希望Rstudio不會在每次需要tck時都會死掉)。 – baptiste

+0

@baptiste - 那*是* RStudio的不幸習慣!在重讀你的問題時,我現在看到我的答案並沒有真正解決最有趣的部分。這裏希望別人能指點我們專業品質的暗色調中間色調的調色板,比如RColorBrewer已經給我們的調色板組合。 –

+0

[本文(警告:pdf)](http://www.sandia.gov/~kmorel/documents/ColorMaps/ColorMapsExpanded.pdf)中的圖6中的「等亮度彩色貼圖」看起來很有前景,並且緊接着的討論這個數字也很有趣。 –

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有這些坡道,所以你可以宰殺他們如何從那裏取得了坡道。