scale_fill_manual define color for NA values

GaryDe picture GaryDe · Jul 17, 2017 · Viewed 8.4k times · Source

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

Answer

Peter picture Peter · Jul 17, 2017

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

enter image description here