0

Just aiming to use connect observations containing NAs using ggplot and the facet option

df <- data.frame(
    time = 1:5,
    y1 = c(4, 2, 3, 1, NA),
    y2 = c(4, 5, NA, 6, 10),
    y3 = c(8, 7, NA, 4, 5)
  )

  library(ggplot2)
  ggplot(df, aes(x=time, y=y2)) + geom_line() # no connection between observations

  ggplot(na.omit(df), aes(x=time, y=y2)) + geom_line() # a way to connect is to omit NAs but this works only when one variable 

  library(tidyr)
  df2 <- df %>% gather(key = "var", value = "values", 2:4)  # gather values from variables

  ggplot(df2, aes(x=time, y=values, colour = var)) + geom_line()+
  facet_wrap(~ var) # no connection between observations ==> issue !

Any ideas ?

www
  • 38,575
  • 12
  • 48
  • 84
dambach
  • 79
  • 7

1 Answers1

1

You can set na.rm = TRUE when using the gather function to remove NA values and then plot the data.

library(tidyr)
df2 <- df %>% gather(key = "var", value = "values", 2:4, na.rm = TRUE)

ggplot(df2, aes(x = time, y = values, colour = var)) + 
  geom_line() +
  facet_wrap(~var)

enter image description here

www
  • 38,575
  • 12
  • 48
  • 84
  • 1
    @dambach Thanks fro accepting my answer. I realized that you can set `na.rm = TRUE` when using the `gather` function, which does not need the use of `na.omit`. – www Nov 13 '17 at 17:05