默認的顏色間隔均勻的色調在色輪上你可以檢查這是如何從here產生
您可以使用scale_fill_manual
與那些顏色:。
p + scale_fill_manual(values=c("#F8766D", "#00BA38"))
在這裏,我用ggplot_build(p)$data
從cyl
得到的顏色。
或者,也可以使用其他的調色板以及像這樣:
p + scale_fill_brewer(palette="Set1")
,並找到在調色板上的顏色,你可以這樣做:
require(RColorBrewer)
brewer.pal(9, "Set1")
檢查包裝是否知道調色板和其他選項,如果你有興趣。
編輯: @ user248237dfsf,因爲我已經在在頂部的鏈接中指出,從@Andrie此功能顯示的顏色產生:
ggplotColours <- function(n=6, h=c(0, 360) +15){
if ((diff(h)%%360) < 1) h[2] <- h[2] - 360/n
hcl(h = (seq(h[1], h[2], length = n)), c = 100, l = 65)
}
> ggplotColours(2)
# [1] "#F8766D" "#00BFC4"
> ggplotColours(3)
# [1] "#F8766D" "#00BA38" "#619CFF"
如果你看一下產生的兩種顏色,第一個是相同的,但第二個顏色不一樣,當n = 2和n = 3時。這是因爲它產生顏色均勻間隔色調。如果你想使用cyl
的顏色作爲vs
,那麼你必須設置scale_fill_manual
並使用這個函數生成n = 3的顏色。
要驗證這確實是發生了什麼事,你可以這樣做:
p1 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(cyl)))
p2 <- ggplot(mtcars, aes(factor(cyl), mpg)) +
geom_boxplot(aes(fill = factor(vs)))
現在,如果你這樣做:
ggplot_build(p1)$data[[1]]$fill
# [1] "#F8766D" "#00BA38" "#619CFF"
ggplot_build(p2)$data[[1]]$fill
# [1] "#F8766D" "#00BFC4" "#F8766D" "#00BFC4" "#F8766D"
你看,這些都是正在使用ggplotColours
和產生的顏色差異的原因也很明顯。我希望這有幫助。
但是,這並不能解釋爲什麼一個變量繪成因素你得到一組顏色,併爲不同的一個你會得到另一套顏色像我鏈接到的文檔頁面。顏色間隔均勻,我可以看到,但爲什麼它們之間有所不同?我希望它看起來像第一個不是第二個。 – user248237dfsf 2013-02-28 13:35:40
能夠手動設置色相輪上每種顏色之間的步距將會很好。這樣我們可以在連續因素之間獲得更大的對比。在360之後,它應該從0開始繼續。 – JohannesNE 2015-05-28 10:51:29