ggplot2 time series plotting: how to omit periods when there is no data points?

前端 未结 3 1727
广开言路
广开言路 2020-12-15 21:08

I have a time series with multiple days of data. In between each day there\'s one period with no data points. How can I omit these periods when plotting the time series usin

相关标签:
3条回答
  • 2020-12-15 21:25

    The problem is that how does ggplot2 know you have missing values? I see two options:

    1. Pad out your time series with NA values
    2. Add an additional variable representing a "group". For example,

      dd = data.frame(Time, Value)
      ##type contains three distinct values
      dd$type = factor(cumsum(c(0, as.numeric(diff(dd$Time) - 1))))
      
      ##Plot, but use the group aesthetic
      ggplot(dd, aes(x=Time, y=Value)) +
            geom_line (aes(group=type))
      

      gives

      enter image description here

    0 讨论(0)
  • 2020-12-15 21:27

    csgillespie mentioned padding by NA, but a simpler method is to add one NA after each block:

    Value[seq(1,length(Value)-1,by=100)]=NA
    

    where the -1 avoids a warning.

    0 讨论(0)
  • 2020-12-15 21:34

    First, create a grouping variable. Here, two groups are different if the time difference is larger than 1 minute:

    Group <- c(0, cumsum(diff(Time) > 1))
    

    Now three distinct panels could be created using facet_grid and the argument scales = "free_x":

    library(ggplot2)
    g <- ggplot(data.frame(Time, Value, Group)) + 
      geom_line (aes(x=Time, y=Value)) +
      facet_grid(~ Group, scales = "free_x")
    

    enter image description here

    0 讨论(0)
提交回复
热议问题