############################################## # Plot functions Rt figure # 2020-05-28 # ___UITZONDERINGSGROND_2___ -> ___UITZONDERINGSGROND_2___ ############################################## library(tidyverse) library(lubridate) library(cowplot) epicurve <- readRDS("/___UITZONDERINGSGROND_6___epicurve_2020-05-28.rds") plot_totcurve_Osiris <- function(epicurve, IC = FALSE) { perc_reportedSO <- round(100*sum(epicurve$incidenceTOT)/sum(epicurve$incidence_mean)) perc_estimatedSO <- 100 - perc_reportedSO p <- ggplot(data = epicurve, mapping = aes(x = dates)) + geom_bar(data = . %>% mutate(adm_incidenceEXTRA = adm_incidenceEXPECTED - adm_incidenceTOT) %>% pivot_longer(cols = c(adm_incidenceABROAD, adm_incidenceNL, adm_incidenceEXTRA), names_to = "incidenceType", values_to = "incidence") %>% mutate(incidenceType = factor(incidenceType) %>% fct_relevel("adm_incidenceEXTRA", "adm_incidenceNL", "adm_incidenceABROAD")), mapping = aes(y = incidence, fill = incidenceType), stat = "identity") + geom_ribbon(mapping = aes(ymin = incidence_lower, ymax = incidence_upper), fill = adjustcolor("#d52b1e", alpha = 0.5)) + geom_line(mapping = aes(y = incidence_mean, col = cut(incidence_lower, breaks = c(-1, 1000, 2000)))) + scale_fill_manual( values = c("grey", "#01689b", "#ffb612"), labels = c("verwacht op basis van\nrapportagevertraging", paste0("opnamedatum ", if(IC) "IC" else "ziekenhuis", ", geïnfecteerd\nin Nederland"), paste0("opnamedatum ", if(IC) "IC" else "ziekenhuis", ", geïnfecteerd\nbuiten Nederland"))) + scale_color_manual( values = c("#d52b1e", 1), labels = c(paste0("eerste ziektedag\n (", perc_reportedSO, "% gerapporteerd, ", perc_estimatedSO, "% geschat)"), "")) + scale_x_date( limits = c(as.Date("2020-02-14"), last(epicurve$dates)+1), expand = expansion(add = -0.5), breaks = "4 days", minor_breaks = "1 day", date_labels = "%e %b") + labs(x = NULL, y = "aantal per dag", subtitle = paste("gebaseerd op", if(IC) "IC" else "ziekenhuis", "opnames uit OSIRIS data", last(epicurve$dates))) + theme_minimal() + theme(legend.position = c(1, 1), legend.justification = c(1, 1), legend.title = element_blank(), axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5), panel.grid.minor = element_blank()) + guides(fill = guide_legend(order = 1), color = guide_legend(order = 2)) return(p) } plot_Reff_Osiris <- function(epicurve, caseReff = TRUE, IC = TRUE) { p <- ggplot(data = epicurve, mapping = aes(x = dates, y = if(caseReff) caseR else instR, ymin = if(caseReff) caseRlower else instRlower, ymax = if(caseReff) caseRupper else instRupper)) + geom_ribbon(fill = "#c6b8cf", col = NA) + geom_line(col = "#42145f") + geom_line(y = 1, lty = 2) + coord_cartesian( ylim = c(0,4)) + scale_x_date( limits = c(as.Date("2020-02-14"), last(epicurve$dates)+1), expand = expansion(add = -0.5), breaks = "4 days", minor_breaks = "1 day", date_labels = "%e %b") + labs(x = NULL, y = if(caseReff) "effectieve R" else "instantane R", subtitle = paste("gebaseerd op", if(IC) "IC" else "ziekenhuis", "opnames uit OSIRIS data", last(epicurve$dates))) + theme_minimal() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5), panel.grid.minor = element_blank()) return(p) } plot_grid(plot_totcurve_Osiris(epicurve = epicurve, IC = FALSE), plot_Reff_Osiris(epicurve %>% mutate(caseR = ifelse(dates > report_date - 14, NA, caseR)), caseR = TRUE, IC = FALSE) + labs(subtitle = NULL), ncol = 1, align = "hv")