# Prepare data for plotting
plot_data <- current_2024 |>
pivot_longer(
cols = c(cases, baseline_cases, threshold_poisson),
names_to = "series",
values_to = "value"
) |>
mutate(
series = case_when(
series == "cases" ~ "2024 observed",
series == "baseline_cases" ~ "2023 baseline",
series == "threshold_poisson" ~ "Poisson 95% upper limit"
)
)
p_dive <- ggplot() +
# Baseline line
geom_line(data = filter(plot_data, series == "2023 baseline"),
aes(x = week, y = value, color = series),
linewidth = 0.5, linetype = "dashed"
) +
# Threshold line
geom_line(data = filter(plot_data, series == "Poisson 95% upper limit"),
aes(x = week, y = value, color = series),
linewidth = 0.6
) +
# 2024 observed line
geom_line(data = filter(plot_data, series == "2024 observed"),
aes(x = week, y = value, color = series),
linewidth = 0.6
) +
# Alert points
geom_point(data = filter(current_2024, alert_poisson == TRUE),
aes(x = week, y = cases),
color = "red", size = 2
) +
scale_color_manual(values = c(
"2023 baseline" = "#2c3e50",
"Poisson 95% upper limit" = "#e67e22",
"2024 observed" = "#3498db"
)) +
labs(
title = paste("C. difficile outbreak detection:", region_focus),
subtitle = paste("4 of 5 comparable weeks exceed threshold (80% alert rate)"),
x = "Week number",
y = "Number of cases",
color = "",
caption = "Poisson limit = baseline + 1.96×√(baseline). Based on 5 weeks with baseline data."
) +
theme_minimal() +
theme(legend.position = "bottom")
ggplotly(p_dive, tooltip = c("week", "value", "series"))