Advertisement
MetricT

geom_recession_bars prototype

Aug 22nd, 2021
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.42 KB | None | 0 0
  1. ####################################################################
  2. ### Add NBER recession bars to ggplot graphs
  3. ####################################################################
  4.  
  5. geom_recession_bars <- function(date_start, date_end, fill = "darkseagreen4") {
  6.  
  7. date_start <- as.Date(date_start, origin = "1970-01-01")
  8. date_end <- as.Date(date_end, origin = "1970-01-01")
  9.  
  10. recessions_tibble <-
  11. tribble(
  12. ~peak, ~trough,
  13. "1857-06-01", "1858-12-01",
  14. "1860-10-01", "1861-06-01",
  15. "1865-04-01", "1867-12-01",
  16. "1869-06-01", "1870-12-01",
  17. "1873-10-01", "1879-03-01",
  18. "1882-03-01", "1885-05-01",
  19. "1887-03-01", "1888-04-01",
  20. "1890-07-01", "1891-05-01",
  21. "1893-01-01", "1894-06-01",
  22. "1895-12-01", "1897-06-01",
  23. "1899-06-01", "1900-12-01",
  24. "1902-09-01", "1904-08-01",
  25. "1907-05-01", "1908-06-01",
  26. "1910-01-01", "1912-01-01",
  27. "1913-01-01", "1914-12-01",
  28. "1918-08-01", "1919-03-01",
  29. "1920-01-01", "1921-07-01",
  30. "1923-05-01", "1924-07-01",
  31. "1926-10-01", "1927-11-01",
  32. "1929-08-01", "1933-03-01",
  33. "1937-05-01", "1938-06-01",
  34. "1945-02-01", "1945-10-01",
  35. "1948-11-01", "1949-10-01",
  36. "1953-07-01", "1954-05-01",
  37. "1957-08-01", "1958-04-01",
  38. "1960-04-01", "1961-02-01",
  39. "1969-12-01", "1970-11-01",
  40. "1973-11-01", "1975-03-01",
  41. "1980-01-01", "1980-07-01",
  42. "1981-07-01", "1982-11-01",
  43. "1990-07-01", "1991-03-01",
  44. "2001-03-01", "2001-11-01",
  45. "2007-12-01", "2009-06-01",
  46. "2020-02-01", "2020-04-01"
  47. ) %>%
  48. mutate(peak = as.Date(peak),
  49. trough = as.Date(trough))
  50.  
  51. recessions_trim <- recessions_tibble %>%
  52. filter(peak >= min(date_start) &
  53. trough <= max(date_end))
  54.  
  55. if (nrow(recessions_trim) > 0) {
  56.  
  57. recession_bars <- geom_rect(data = recessions_trim,
  58. inherit.aes = F,
  59. fill = fill,
  60. alpha = 0.25,
  61. aes(xmin = as.Date(peak, origin = "1970-01-01"),
  62. xmax = as.Date(trough, origin = "1970-01-01"),
  63. ymin = -Inf, ymax = +Inf))
  64. } else {
  65. recession_bars <- geom_blank()
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement