2016-09-15 47 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