在 ggplot geom_bar 中更改 NA 值的标签和颜色?

Change label and colour for NA value in ggplot geom_bar?

我有这样的情节:

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" 来控制分配。

以下对我有用:

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"))