---
title: "EpiCurves: epicurves in ggplot with ggsurveillance"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{EpiCurves: epicurves in ggplot with ggsurveillance}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---

```{r, include = FALSE}
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  warning = FALSE,
  message = FALSE,
  fig.width = 7,
  fig.height = 4
)
```

```{r setup, echo = FALSE}
library(ggplot2)
library(dplyr)
library(tidyr)
library(outbreaks)
library(ggsurveillance)
```

## Epi Curve examples

This vignette is still work in progress. But the examples are hopefully already helpful and inspiring.

### Ebola Outbreak in Kikwit, Democratic Republic of the Congo 1995

```{r}
ggplot(outbreaks::ebola_kikwit_1995, aes(x = date, weight = onset)) +
  geom_epicurve(date_resolution = "week") +
  scale_x_date(date_breaks = "2 weeks", date_labels = "%V'%g", name = "week") +
  scale_y_cases_5er() +
  theme_bw()
```

### SARS Outbreak in Canada 2003

```{r}
outbreaks::sars_canada_2003 |>
  pivot_longer(starts_with("cases"), names_prefix = "cases_", names_to = "origin") |>
  ggplot(aes(x = date, weight = value, fill = origin)) +
  geom_epicurve(date_resolution = "week") +
  scale_y_cases_5er() +
  theme_bw()
```

## Influenza Data from Germany 2020-2025

-   `align_dates_seasonal()` defines the influenza seasons
-   `geom_vline_year()` marks the turn of the years
-   `scale_y_cases_5er()` creates a y-axis with more ticks and aligns 0 with the x-axis.

```{r}
influenza_germany |>
  # Keep Age Groups 00-14, 15-59, 60+
  filter(AgeGroup != "00+") |>
  # Calc Influenza Seasons
  align_dates_seasonal(dates_from = ReportingWeek) |>
  ggplot(aes(x = ReportingWeek, weight = Cases, fill = season)) + # , weight = Cases
  geom_vline_year(color = "grey50") +
  geom_epicurve(color = NA, stat = "bin_date", date_resolution = "week") +
  scale_y_cases_5er() +
  theme_bw()
```

## Extra

```{r}
influenza_germany |>
  # Calc Influenza Seasons
  align_dates_seasonal(dates_from = ReportingWeek) |>
  ggplot(aes(x = ReportingWeek, weight = Cases, color = AgeGroup)) + # , weight = Cases
  geom_line(stat = "bin_date", date_resolution = "month") +
  scale_y_cases_5er() +
  facet_wrap(~AgeGroup) +
  theme_bw()
```