Reputation: 613
I try to make a barplot with ggplot2 and am facing some issues with defining the color for 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"))
In my var2 I have values c("s", "i", "r", NA)
. For some reason my code above inside the scale_fill_manual
does not work for NA, even if it works fine for all the others values.
Can someone help me figure out why?
Thanks for the help
Upvotes: 21
Views: 19517
Reputation: 7800
The na.value
needs to be outside of the values
argument. Here is an example:
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")
Upvotes: 42