Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

scale_fill_manual define color for NA values

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

like image 439
GaryDe Avatar asked Jul 17 '17 12:07

GaryDe


1 Answers

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

like image 50
Peter Avatar answered Oct 01 '22 08:10

Peter