Corona-Infektionsverlauf im Ländervergleich

Die Corona-Pandemie verläuft in den Ländern ganz unterschiedlich. Grafiken der 20 Länder mit den meisten Infektionen (Stand 1. August 2020) zeigen gut die unterschiedlichen Verläufe.
Die Daten stammen unter anderem von der Johns Hopkins University in Baltimore. Das Package tidycovid19 liest die Daten ein. Es ist auf Github erhältlich. Mit Hilfe von gridExtra werden die 20 einzelnen Diagramme zu einer großen Grafik zusammengefasst.

library(tidyverse)
library(tidycovid19)
library(zoo)
library(grid)
library(gridExtra)
df <- download_merged_data(cached = TRUE, silent = TRUE)
p1 <- df %>%
  filter(iso3c == "USA") %>%
  mutate(
    new_cases = confirmed - lag(confirmed),
    new_deaths = deaths - lag(deaths),
    ave_new_cases = rollmean(new_cases, 7, na.pad=TRUE, align="right")) %>%
  filter(!is.na(new_cases), !is.na(ave_new_cases), !is.na(new_deaths), date > "2020-03-01") %>%
  ggplot(aes(x = date)) +
  geom_bar(aes(y = new_cases), stat = "identity", fill = "lightblue") +
  geom_bar(aes(y = new_deaths), stat = "identity", fill = "black") +
  geom_line(aes(y = ave_new_cases), color ="red") +
  theme_minimal() +
  ggtitle("USA") +
  theme(plot.title = element_text(hjust = 0.5, size = 10)) +
  xlab("Datum") +
  ylab("Neue Infektionen")
p2 <- df %>%
  filter(iso3c == "BRA") %>%
  mutate(
    new_cases = confirmed - lag(confirmed),
    new_deaths = deaths - lag(deaths),
    ave_new_cases = rollmean(new_cases, 7, na.pad=TRUE, align="right")) %>%
  filter(!is.na(new_cases), !is.na(ave_new_cases), !is.na(new_deaths), date > "2020-03-01") %>%
  ggplot(aes(x = date)) +
  geom_bar(aes(y = new_cases), stat = "identity", fill = "lightblue") +
  geom_bar(aes(y = new_deaths), stat = "identity", fill = "black") +
  geom_line(aes(y = ave_new_cases), color ="red") +
  theme_minimal() +
  ggtitle("Brasilien") +
  theme(plot.title = element_text(hjust = 0.5, size = 10)) +
  xlab("Datum") +
  ylab("Neue Infektionen")
p3 <- df %>%
  filter(iso3c == "IND") %>%
  mutate(
    new_cases = confirmed - lag(confirmed),
    new_deaths = deaths - lag(deaths),
    ave_new_cases = rollmean(new_cases, 7, na.pad=TRUE, align="right")) %>%
  filter(!is.na(new_cases), !is.na(ave_new_cases), !is.na(new_deaths), date > "2020-03-01") %>%
  ggplot(aes(x = date)) +
  geom_bar(aes(y = new_cases), stat = "identity", fill = "lightblue") +
  geom_bar(aes(y = new_deaths), stat = "identity", fill = "black") +
  geom_line(aes(y = ave_new_cases), color ="red") +
  theme_minimal() +
  ggtitle("Indien") +
  theme(plot.title = element_text(hjust = 0.5, size = 10)) +
  xlab("Datum") +
  ylab("Neue Infektionen")
...
...
...
p20 <- df %>%
  filter(iso3c == "ARG") %>%
  mutate(
    new_cases = confirmed - lag(confirmed),
    new_deaths = deaths - lag(deaths),
    ave_new_cases = rollmean(new_cases, 7, na.pad=TRUE, align="right")) %>%
  filter(!is.na(new_cases), !is.na(ave_new_cases), !is.na(new_deaths), date > "2020-03-01") %>%
  ggplot(aes(x = date)) +
  geom_bar(aes(y = new_cases), stat = "identity", fill = "lightblue") +
  geom_bar(aes(y = new_deaths), stat = "identity", fill = "black") +
  geom_line(aes(y = ave_new_cases), color ="red") +
  theme_minimal() +
  ggtitle("Argentinien") +
  theme(plot.title = element_text(hjust = 0.5, size = 10)) +
  xlab("Datum") +
  ylab("Neue Infektionen")
grid.arrange(p1, p2, p3, p4, p5, p6, p7, p8, p9, p10,
             p11, p12, p13, p14, p15, 
             p16, p17, p18, p19, p20, ncol=5, top=textGrob("Corona Neuinfektionen", 
                                        gp=gpar(fontsize=16, fontface = "bold")))

Corona-Infektionen

Klicke auf das Bild für eine vergrößerte Darstellung

Das Skript: Das Package tidyverse ist ein Meta-Package, das mehrere Packages wie ggplot2 und dplyr nachlädt. Die Installation von tidycovid19 kann über devtools::install_github("joachim-gassen/tidycovid19") erfolgen. download_merged_data() liefert einen Länder-Tages-Data-Frame, der Daten aus verschiedenen Quellen zusammenführt. Der Data Frame wird entsprechend angepasst. Das darzustellende Land wird als ISO3c-Code übergeben. Anschließend erfolgt die Berechnung der täglichen Neuinfektionen sowie der Todeszahlen. Das Startdatum ist hier der 1. März 2020. Anschließend erzeugt ggplot das Diagramm. Der Block wird 19 Mal wiederholt, wobei lediglich der ISO3c-Code sowie der Titel des Diagramms zu ändern sind. Schließlich erstellt grid.arrange() aus den 20 Einzeldiagrammen die endgültige Grafik. Die Diagramme sind in 4 Reihen à 5 Diagramme angeordnet. Das lässt sich gut als Querformat ausdrucken.

Bier Schreiben macht durstig! Spendier mir doch ein Bier, indem du mir einen kleinen Betrag via Paypal schickst oder ein paar Bitcoin- oder Ethereum-Bruchteile an die entsprechende nachfolgende Adresse. Prost & auf dein Wohl!





Bitcoin-Adresse : 1PjYNNjHmkAUmf626hukL32Vs1wFt8v1wT
Ethereum-Adresse : 0x974e73994c7483eef1396a21b9937aecb7b6c286

Teile diesen Beitrag!