2014-10-09 176 views
5

使用scale_colour_manual(),可以從RColorBrewer中選取特定顏色作爲顏色值嗎?從RColorBrewer調色板中選取單獨的顏色作爲ggplot2中的scale_colour_manual()值

例如,在:

scale_colour_manual(breaks=c("A","B","C","D","E"), 
    values=c("green","orange","blue","pink","yellow")) 

我想用第一種顏色從調色板scale_colour_brewer(type = "qual", palette = 7),而不是「綠色」,那麼第四,而不是「橙色」調色板scale_colour_brewer(type = "qual", palette = 2)的顏色,等等。

回答

17

我經常做到以下幾點,

library(RColorBrewer) 
my_palette = c(brewer.pal(5, "Set1")[c(1,3,4,5)], brewer.pal(5, "Pastel1")[c(2,5,1,3)]) 
#grid::grid.raster(my_palette, int=F) 

scale_colour_discrete = function(...) scale_colour_manual(..., values = palette()) 

dsamp <- diamonds[sample(nrow(diamonds), 1000), ] 
(p <- qplot(carat, price, data = dsamp, colour = clarity)) # default palette 

palette(my_palette) 
p # custom colors 
+0

這看起來很棒巴蒂斯特,但我有一個困難時期的思想融入我的代碼。我應該使用「scale_colour_discrete = function(...)scale_colour_manual(...,values = palette())」而不是「scale_colour_manual(breaks = c(」r「,」á/ b「,」ő/é「, 「w/s(0.3)」,「w/s(0.2)」),值= c(「綠色」,「橙色」,「藍色」,「粉紅色」,「黃色」))「? – Rodolphe 2014-10-09 21:20:33

+2

隨時嘗試和使用最適合你的東西。這個想法是定義你自己喜歡的顏色矢量,並將它們作爲值提供給scale_colour_manual。我使用palette()技巧,以便我的代碼運行,而不管我是否忘記將自定義顏色包含在腳本中。 – baptiste 2014-10-09 21:30:18

+0

這額外的信息做了伎倆,非常感謝! – Rodolphe 2014-10-09 21:34:41