/ Germany.R
Germany.R
 1  library(ggplot2)
 2  
 3  # Run djhurio's script once to get all EU data & regenerate faceted plots
 4  # install.packages(c("data.table", "ISOcodes", "eurostat"))
 5  source('deaths-by-week.R'); rm(list = ls())
 6  
 7  # My goal here: Split mortality data for a single country by pre- & post-CoVID
 8  # TODO: Loop over all other countries & generate plots with English labels.
 9  country <- 'Germany'
10  covid_start <- 2020
11  label_pre  <- 'vor SARS-CoV2'
12  label_post <- 'mit SARS-CoV2'
13  weeks <- seq(from = 0, to = 52, by = 4)
14  file_name <- paste0('output/', country, '.jpg')
15  
16  data <- readr::read_csv('data.csv') |>
17    dplyr::filter(cntry == country) |>
18    dplyr::transmute(year, # = gsub('W-\\d+', '', time),
19                     # country = cntry, # for all countries, instead of filter
20                     week, death.rate) |>
21    dplyr::mutate(SARS = ifelse(year < covid_start, label_pre, label_post)) #|>
22  # dplyr::group_by(Woche)
23  # death_median = median(death.rate),
24  # death_iqr = IQR(death.rate)
25  
26  pre <- dplyr::filter(data, SARS == label_pre)
27  post <- dplyr::filter(data, SARS == label_post)
28  N_years <- length(unique(post$year))
29  max_deaths <- ceiling(max(post$death.rate, pre$death.rate))
30  
31  start <- min(pre$year)
32  end <- max(pre$year)
33  # Grippe <- dplyr::filter(pre, Woche > 7 & Woche < 11) %>%
34  #   dplyr::slice_max(death.rate, prop = 0.05) %>%
35  #   dplyr::select(Jahr) %>%
36  #   unique()
37  
38  ggplot(mapping = aes(x = week, y = death.rate, group = year)) +
39    geom_line(data = pre, aes(alpha = year), show.legend = FALSE) +
40    geom_line(
41      data = post,
42      mapping = aes(y = death.rate, color = year),
43      linewidth = 1
44    ) +
45    # facet_wrap(vars(country)) + # for all countries, instead of filter
46    scale_color_gradient(low = 'orange', high = "darkred", name = label_post) +
47    scale_x_continuous(breaks = weeks,
48                       minor_breaks = NULL) +
49    ylab('Todesfälle pro 1 Mio. Einwohner:inne:n') +
50    # ylab('Death rate [per million]') +
51    labs(
52      title = 'Deutschland: Sterblichkeit seit SARS-CoV2',
53      # title = paste0(country, ': Death rate before & after SARS-CoV2'),
54      # subtitle = 'Sources: eurostat demo_r_mwk_ts & GitHub.com/djhurio/COVID-19',
55      subtitle = paste0(
56        'Quelle: eurostat demo_r_mwk_ts & GitHub.com/djhurio/COVID-19',
57        '\nFrühere Krisen: Grippe im Spätwinter und Hitze im Sommer',
58        '\nAlterungstrend: ',
59        start,
60        '/hellgrau → ',
61        end,
62        '/schwarz'
63      ),
64      x = 'Kalenderwoche'
65      # x = 'calendar week'
66    ) +
67    theme_minimal() +
68    theme(
69      legend.position = c(.5, .8),
70      legend.background = element_rect(fill = 'white', linewidth = 0)
71    ) +
72      guides(col = guide_legend(ncol = N_years, label.position = 'bottom'))
73  
74  ggsave(file_name,
75         width = 2048,
76         height = 1536,
77         units = 'px')