【问题标题】:Change label and colour for NA value in ggplot geom_bar?在ggplot geom_bar中更改NA值的标签和颜色?
【发布时间】:2017-06-27 08:29:14
【问题描述】:

我有这样的情节:

data <- data.frame(time = c("time1", "time2", "time1"),
                   sex = c("m", "f", NA))

ggplot(data = data) +
  geom_bar(aes(x = time, y = (..count..)/sum(..count..),
               fill = sex),
           position = "fill") +
  scale_y_continuous(name = "percentation",
                     labels = scales::percent)

我正在尝试更改 NA 值的标签和颜色。我用scale_fill_manual 喜欢添加

  scale_fill_manual(labels = c("m" = "male",
                               "f" = "female",
                               "NA" = "unknown"),
                    values = c("m" = "blue",
                               "f" = "red",
                               "NA" = "green"))

不幸的是,这不起作用,所以我想问一下,是否有人可以帮助我解决这个问题?选择 NA 值是否有特殊词或其他内容?另外我想保持直接分配,比如"m" = "male",而不仅仅是写"male"来控制分配。

【问题讨论】:

  • 哪一部分不起作用?颜色还是标签?如果您检查scal_fill_manual function,您会看到有一个名为na.value 的参数,您可以为其指定所需的颜色。
  • 是的,谢谢。但我想同时更改标签和颜色。

标签: r ggplot2 legend na geom-bar


【解决方案1】:

以下内容对我有用:

data <- data.frame(time = c("time1", "time2", "time1"),
                   sex = c("m", "f", NA))
data$sex = as.character(data$sex)

data$sex[is.na(data$sex)] <- "Unknown"


ggplot(data = data) +
  geom_bar(aes(x = time, y = (..count..)/sum(..count..),
               fill = sex),
           position = "fill") +
  scale_y_continuous(name = "percentation",
                     labels = scales::percent)

我不确定你是否可以直接这样做。因此,首先将NA 转换为某个东西,然后您可以添加您的代码:

  scale_fill_manual(labels = c("m" = "male",
                               "f" = "female",
                               "Unknown" = "unknown"),
                    values = c("m" = "blue",
                               "f" = "red",
                               "Unknown" = "green"))

【讨论】:

  • 谢谢,这绝对是我的问题的解决方案。但我想知道,如果还有一个选项,直接在 ggplot-call 中更改标签?背景是,我有很多变量,我想更改图中的名称,而不是更改数据中的每个变量。
  • 或许用forcats::fct_explicit_na()
  • 谢谢!我现在用你的方法。我认为对于这个(小)问题,这是最简单的方法。
猜你喜欢
  • 2021-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 2019-04-17
  • 2020-01-01
  • 1970-01-01
相关资源
最近更新 更多