scale_fill_manual为NA值定义颜色

20

我试图使用ggplot2制作条形图,但在定义NA的颜色方面遇到了一些问题。

ggh <- ggplot(data=dat, aes(x=var1, fill=var2))+
  geom_bar(position="dodge")+
  scale_fill_manual(
    values=c("s"="steelblue", "i"="darkgoldenrod2", "r"="firebrick4", na.value="black"))
在我的var2中,我有值为("s", "i", "r", NA)的项。由于某种原因,我的代码在scale_fill_manual内部对NA不起作用,即使对于所有其他值都正常工作。

可以有人帮我弄清楚原因吗?

感谢您的帮助


7
尝试使用 scale_fill_manual(values=c("s"="steelblue", "i"="darkgoldenrod2", "r"="firebrick4"), na.value="black") 来手动设置填充颜色,其中字母 "s" 会对应钢蓝色,字母 "i" 会对应深金黄色,字母 "r" 会对应火砖红色,缺失值将使用黑色填充。 - Erdem Akkas
参数 values 不包括参数 na.value,因此请关闭向量 values - Mbr Mbr
谢谢,这很简单 ^^ - GaryDe
1个回答

38

na.value需要放在values参数之外。这里是一个例子:

library(ggplot2)

set.seed(42)

mydata <- data.frame(var1 = sample(c("A", "B", "C", "D"), 150, replace = TRUE),
                     var2 = sample(c("s", "i", "r", NA), 150, replace = TRUE))

ggplot(mydata) +
  aes(x = var1, fill = var2) +
  geom_bar() + 
  scale_fill_manual(values = c("s" = "steelblue",
                               "i" = "darkgoldenrod2",
                               "r" = "firebrick4"),
                    na.value = "black")

在此输入图片描述


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接