2016-09-15 46 views
0

我正在生成散點圖,其中我的某個類別是「其他」類別。我希望我的因子變量中的其他類別是它們的顏色,但「其他」類別是灰色的。當我嘗試使用scale_color_manual()函數時,它給我帶來的錯誤是我的類別太少。以下示例使用虹膜數據。ggplot2:第一種顏色分類

data(iris) 
p1 <- ggplot(iris, aes(x=Sepal.Length,y=Sepal.Width,color=Species)) + geom_point() 
p1 
p2 <- p1 + scale_color_manual(values=c("virginica"="gray")) 
p2 

Error: Insufficient values in manual scale. 3 needed but only 1 provided.

是否有可能只是改變一類的顏色,不管其他值的因素是什麼?我寧願不選擇所有三個類別的顏色,因爲我實際使用的數據有30-40個類別,其中一個是一致的「其他」。

+1

[old but same question](http://stackoverflow.com/questions/6075140/in-r-how-do-i-change-the-color-value-of-just-one-value-in-然而,ggplot2s-scale-fill-b)並不回答你的問題或原始問題。經典的stackoverflow。你可以在頂部添加另一個圖層+ geom_point(data = iris [iris $ Species =='virginica',],color ='gray')'但是圖例不對 – rawr

回答

0

根據this post你可以得到ggplot顏色使用此功能:

gg_color_hue <- function(n) { 
    hues = seq(15, 375, length = n + 1) 
    hcl(h = hues, l = 65, c = 100)[1:n] 
} 

所以你的情況:

cols = gg_color_hue(length(levels(iris$Species))) 

然後你reprogramm的顏色要更改,並用它爲你的陰謀:

cols[levels(iris$Species)=="virginica"]="gray" 
p2 <- p1 + scale_color_manual(values=cols) 

enter image description here