Nothing
knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = FALSE, fig.width = 7, fig.height = 4 )
library(ggplot2) library(dplyr) library(tidyr) library(outbreaks) library(ggsurveillance)
This vignette is still work in progress. But the examples are hopefully already helpful and inspiring.
Epi Gantt plots are used to visualize exposure times in infectious disease outbreaks. Hospital outbreaks are a common example for their use. Lying times of patients on different wards can be visualized and potential transmission routes identified. Like this:
# Transform to long format linelist_hospital_outbreak |> pivot_longer( cols = starts_with("ward"), names_to = c(".value", "num"), names_pattern = "ward_(name|start_of_stay|end_of_stay)_([0-9]+)", values_drop_na = TRUE ) -> df_stays_long linelist_hospital_outbreak |> pivot_longer(cols = starts_with("pathogen"), values_to = "date") -> df_detections_long # Plot ggplot(df_stays_long) + geom_epigantt(aes(y = Patient, xmin = start_of_stay, xmax = end_of_stay, color = name)) + geom_point(aes(y = Patient, x = date, shape = "Date of pathogen detection"), data = df_detections_long) + scale_y_discrete_reverse() + theme_bw() + theme_mod_legend_bottom()
linelist_hospital_outbreak
linelist_hospital_outbreak |> pivot_longer( cols = starts_with("ward"), names_to = c(".value", "num"), names_pattern = "ward_(name|start_of_stay|end_of_stay)_([0-9]+)", values_drop_na = TRUE ) -> df_stays_long df_stays_long |> select(Patient, num:end_of_stay) linelist_hospital_outbreak |> pivot_longer(cols = starts_with("pathogen"), values_to = "date", values_drop_na = TRUE) -> df_detections_long df_detections_long |> select(Patient, name, date)
ggplot(df_stays_long) + geom_epigantt(aes(y = Patient, xmin = start_of_stay, xmax = end_of_stay, color = name)) + geom_point(aes(y = Patient, x = date, shape = "Date of pathogen detection"), data = df_detections_long) + scale_y_discrete_reverse() + theme_bw() + theme_mod_legend_bottom()
outbreaks::varicella_sim_berlin |> filter(center1 == "Platz der Luftbruecke") |> arrange(onset) |> slice_head(n = 20) |> mutate( fullname = paste(firstname, lastname), fullname = factor(fullname, levels = rev(fullname)) ) |> pivot_longer( cols = starts_with(c("arrival", "leave", "center")), names_to = c(".value", "group"), names_pattern = "(\\w+)(\\d+)" ) |> ggplot(aes(y = fullname)) + geom_epigantt(aes(xmin = arrival, xmax = leave, colour = center), lw_scaling_factor = 100) + # linewidth = 4 # geom_point(aes(x = onset)) + scale_x_date() + theme_bw() + theme_mod_legend_top()
ggplot(outbreaks::measles_hagelloch_1861, aes(y = case_ID, xmin = date_of_prodrome, xmax = date_of_rash, fill = class)) + geom_vline_year(color = "grey50") + geom_epigantt() + scale_x_date(date_breaks = "2 weeks", date_labels = "W%V'%G") + theme_bw()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.