Home > Software design >  Extract ggplot smoothing function and save in dataframe
Extract ggplot smoothing function and save in dataframe

Time:11-19

I am trying to extract my smoothing function from a ggplot and save it as dataframe (hourly datapoints) Plot shown here.

What I have tried:

I have already tried different interpolation techniques, but the results are not satisfying.

  • Linear interpolation causes a zic-zac pattern.
  • Na_spline causes a weird curved pattern.

The real data behaves more closely to the geom_smoothing of ggplot. I have tried to reproduce it with the following functions:

loess.data <- stats::loess(Hallwil2018_2019$Avgstemp~as.numeric(Hallwil2018_2019$datetime), span = 0.5)
loess.predict <- predict(loess.data, se = T)
  • But it creates a list that misses the NA values and is much shorter.

CodePudding user response:

You can pass a newdata argument to predict() to get it to predict a value for every time period you give it. For example (from randomly generated data):

df <- data.frame(date = sample(seq(as.Date('2021/01/01'), 
                                   as.Date('2022/01/01'), 
                                   by="day"), 40),
           var = rnorm(40, 100, 10))


mod <- loess(df$var ~ as.numeric(df$date), span = 0.5)

predict(mod, newdata = seq(as.Date('2021/01/01'), as.Date('2022/01/01'), by="day"))
  • Related