Plotting negative and positive laues

Here's a result of shameless copy-paste from the SO thread I mentioned, and hence full credit goes to Henrik, and recursively to kohske.

df <- data.frame(Date = c(1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990,
                          1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
                          2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
                          2011, 2012, 2013, 2014, 2015, 2016, 2017),
                 Temp = c(-0.2, -0.1, -0.2, -0.7, -0.3, -0.4, -0.7, -0.8, -0.8, -0.2,
                          0.2, -0.4, 0.1, -0.1, 0.2, -0.1, 0.4, 0.5, 1.0, 0.2,
                          0.2, 0.2, 0.1, -0.6, 0.6, 0.6, 0.2, 0.2, 0.5, 0.2,
                          0.3, 0.3, 0.2, 0.4, 0.0, 0.6, 0.5))

df$grp <- "orig"

new_df <- do.call(what = "rbind",
                  args = sapply(X = 1:(nrow(x = df) -1),
                                FUN = function(i) 
                                {
                                  f <- lm(formula = (Date ~ Temp),
                                          data = df[i:(i + 1),])
                                  if (f$qr$rank < 2)
                                  {
                                    return(NULL)
                                  }
                                  r <- predict(object = f,
                                               newdata = data.frame(Temp = 0))
                                  if(df[i,]$Date < r & r < df[i+1,]$Date)
                                  {
                                    return(data.frame(Date = r,
                                                      Temp = 0))
                                  } else
                                  {
                                    return(NULL)
                                  }
                                }))

new_df$grp <- "new"

df_mod <- rbind(df, new_df)

library(ggplot2)
#> Registered S3 methods overwritten by 'ggplot2':
#>   method         from 
#>   [.quosures     rlang
#>   c.quosures     rlang
#>   print.quosures rlang

ggplot(data = df_mod,
       mapping = aes(x = Date,
                     y = Temp)) +
  geom_area(data = subset(x = df_mod,
                          subset = (Temp <= 0)),
            fill = "red") +
  geom_area(data = subset(x = df_mod,
                          subset = (Temp >= 0)),
            fill = "blue") +
  geom_smooth(se = FALSE,
              colour = "green")
#> `geom_smooth()` using method = 'loess' and formula 'y ~ x'

Created on 2019-05-01 by the reprex package (v0.2.1)