2012-11-12 260 views
69

我經常與ggplot2一起使漸變更好(click here for an example)。我需要在基地工作,我認爲scales可以在那裏用來創建顏色漸變,但我嚴重脫離如何。基本目標是生成n種顏色的調色板,範圍從x顏色到y顏色。該解決方案需要在基地工作。這是一個起點,但沒有地方可以輸入n。顏色1和顏色2的n種顏色的漸變

scale_colour_gradientn(colours=c("red", "blue")) 

我深知:

brewer.pal(8, "Spectral") 
RColorBrewer

。我正在尋找更類似於ggplot2處理漸變的方法,該漸變表示我擁有這兩種顏色,並且我需要15種顏色。我怎樣才能做到這一點?

+1

我覺得你需要**尺度**包;最新的** ggplot2 **版本取決於此基礎代碼。即你不需要** ggplot2 **來使用秤,你只需要**秤**包。不知道** scale **中的函數是如何工作的:-) –

回答

112

colorRampPalette可能是你的朋友在這裏:

colfunc <- colorRampPalette(c("black", "white")) 
colfunc(10) 
# [1] "#000000" "#1C1C1C" "#383838" "#555555" "#717171" "#8D8D8D" "#AAAAAA" 
# [8] "#C6C6C6" "#E2E2E2" "#FFFFFF" 

而只是爲了顯示它的工作原理:

plot(rep(1,10),col=colfunc(10),pch=19,cex=3) 

enter image description here

+0

+1擊敗了8秒! – mnel

+1

@mnel - quickdraw贏! ;-) – thelatemail

+1

那很美。 –

6

以上回答是有用的,但在圖中,也很難區分黑色的較暗漸變。一個替代方案中,我發現是如下

palette(gray.colors(10, 0.9, 0.4)) 
plot(rep(1,10),col=1:10,pch=19,cex=3)) 

灰階更多信息使用的灰色梯度here.

新增

當我使用上面的代碼爲不同的顏色,如藍色和黑色,漸變不明顯。 heat.colors()似乎更有用。

This document有更詳細的信息和選項。 pdf

+1

我認爲這個答案對於黑色到白色來說是優越的,但不能歸納爲顏色。感謝您添加這些有價值的信息。 +1 –

+0

添加了一個鏈接,它提供了更好的色彩和黑白色彩漸變和色調選項。 – Anusha

+0

尼斯鏈接!非常豐富。 –

34

只是爲了擴大上一個答案colorRampPalette可以處理兩種以上的顏色。

等了多個伸展 「熱圖」 類型看可以....

colfunc<-colorRampPalette(c("red","yellow","springgreen","royalblue")) 
plot(rep(1,50),col=(colfunc(50)), pch=19,cex=2) 

產生的圖像:

enter image description here

+0

我也可以指定顏色中的對角線或形狀嗎? @jsol – user3631848

+0

我喜歡這個調色板,但有太多的綠色和很少的黃色。有沒有辦法糾正這個問題? –

10

嘗試以下操作:

color.gradient <- function(x, colors=c("red","yellow","green"), colsteps=100) { 
    return(colorRampPalette(colors) (colsteps) [ findInterval(x, seq(min(x),max(x), length.out=colsteps)) ]) 
} 
x <- c((1:100)^2, (100:1)^2) 
plot(x,col=color.gradient(x), pch=19,cex=2) 

enter image description here