我正在生成一个散点图,其中我的类别之一是“其他”类别。我希望因子变量中的其他类别为任何颜色,但“其他”类别为灰色。当我尝试使用scale_color_manual()函数时,它给出了我的类别太少的错误。下面的示例使用虹膜数据。
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
错误:手动刻度中的值不足。需要 3 个,但仅提供 1 个。
是否可以只更改一个类别的颜色,而不考虑因素中的其他值?我不想为所有三个类别选择颜色,因为我实际使用的数据有 30-40 个类别,其中之一始终是“其他”。
基于这个帖子你可以得到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)))
然后重新编程要更改的颜色并将其用于绘图:
cols[levels(iris$Species)=="virginica"]="gray"
p2 <- p1 + scale_color_manual(values=cols)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)