【问题标题】:ggplot2 : Color One Category Separatelyggplot2 :分别为一个类别着色
【发布时间】:2017-01-24 02:21:06
【问题描述】:

我正在生成一个散点图,其中我的一个类别是“其他”类别。我希望我的因子变量中的其他类别是任何颜色,但“其他”类别是灰色的。当我尝试使用 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 个类别,其中一个始终是“其他”。

【问题讨论】:

  • old but same question 没有回答您的问题或原始问题。经典的堆栈溢出。您可以随时在顶部添加另一层+ geom_point(data = iris[iris$Species == 'virginica', ], colour = 'gray'),但图例不正确

标签: r ggplot2


【解决方案1】:

基于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)))

然后您重新编程要更改的颜色并将其用于绘图:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2018-11-20
    • 2018-01-23
    相关资源
    最近更新 更多