# Basic knitr options library(knitr) opts_chunk$set(comment = NA, # echo = FALSE, warning = FALSE, message = FALSE, error = TRUE, cache = FALSE, fig.width = 8.64, fig.height = 4.86, fig.path = 'figures/')
## Load libraries library(covid19) library(ggplot2) library(lubridate) library(dplyr) library(ggplot2) # Define vector of countries countries <- c('China','Korea, South', 'Italy', 'Spain', 'UK', 'Germany', 'South Africa', 'Ghana', 'Kenya')
Logarithmic:
plot_day_zero(countries = countries, day0 = 150)
Linear:
plot_day_zero(countries = countries, day0 = 150, ylog = F)
Logarithmic:
plot_day_zero(countries = countries, day0 = 25)
Linear:
plot_day_zero(countries = countries, day0 = 25, ylog = F)
Logarithmic:
plot_day_zero(countries = countries, day0 = 50, deaths = T)
Linear:
plot_day_zero(countries = countries, day0 = 50, ylog = F, deaths = T)
Logarithmic:
plot_day_zero(countries = countries, day0 = 15, deaths = T)
Linear:
plot_day_zero(countries = countries, day0 = 15, ylog = F, deaths = T)
Logarithmic:
plot_day_zero(countries = countries, day0 = 25, 5, deaths = T)
Linear:
plot_day_zero(countries = countries, day0 = 5, ylog = F, deaths = T)
pd <- df %>% filter(country == 'Spain') pd <- pd %>% left_join(world_pop) pd$value <- pd$confirmed_cases / pd$pop * 100000 pd <- pd %>% filter(value > 0) ggplot(data = pd, aes(x = date, y = value)) + theme_simple() + geom_line() + geom_point() + labs(x = '', y = '', title = 'Spain: Confirmed COVID-19 cases per 100,000 population', subtitle = paste0('Data as of ', max(pd$date))) + theme(axis.title = element_blank(), axis.text = element_text(size = 20)) + geom_text(data = pd %>% filter(date == max(date)), aes(x = date - 2, y = value, label = round(value, digits = 1)), alpha = 0.7)
pd <- df %>% filter(country == 'Spain') pd <- pd %>% left_join(world_pop) pd$value <- pd$deaths / pd$pop * 100000 pd <- pd %>% filter(value > 0) ggplot(data = pd, aes(x = date, y = value)) + theme_simple() + geom_line() + geom_point() + labs(x = '', y = '', title = 'Spain: Confirmed COVID-19 cases per 100,000 population', subtitle = paste0('Data as of ', max(pd$date))) + theme(axis.title = element_blank(), axis.text = element_text(size = 20)) + geom_text(data = pd %>% filter(date == max(date)), aes(x = date - 1, y = value, label = round(value, digits = 1)), alpha = 0.7)
pd <- df %>% filter(country %in% c('Spain', 'Italy')) pd <- pd %>% left_join(world_pop) pd$value <- pd$deaths / pd$pop * 100000 pd <- pd %>% filter(value > 0) cols <- (c('black', 'red')) ggplot(data = pd, aes(x = date, y = value)) + theme_simple() + geom_line(aes(color = country)) + scale_y_log10() + geom_point(aes(color = country)) + labs(x = '', y = '', title = 'Spain: COVID-19 deaths per 100,000 population', subtitle = paste0('Data as of ', max(pd$date))) + theme(axis.title = element_blank(), axis.text = element_text(size = 20)) + geom_text(data = pd %>% filter(date == max(date)), aes(x = date - 1, y = value, label = round(value, digits = 1)), alpha = 0.7) + scale_color_manual(name = '', values = cols)
pd <- df %>% filter(country %in% c('Spain', 'Italy')) pd$value <- pd$deaths pd <- pd %>% filter(value > 0) cols <- (c('black', 'red')) ggplot(data = pd, aes(x = date, y = value)) + theme_simple() + geom_line(aes(color = country)) + scale_y_log10() + geom_point(aes(color = country)) + labs(x = '', y = '', title = 'Spain: COVID-19 deaths', subtitle = paste0('Data as of ', max(pd$date))) + theme(axis.title = element_blank(), axis.text = element_text(size = 20)) + geom_text(data = pd %>% filter(date == max(date)), aes(x = date - 1, y = value, label = round(value, digits = 1)), alpha = 0.7) + scale_color_manual(name = '', values = cols)
the_countries <- sort(unique(c('Spain', 'Italy', 'France', 'Germany', 'Switzerland', 'Denmark', 'Netherlands', 'Norway', 'Sweden'))) pd <- df %>% filter(country %in% the_countries) pd <- pd %>% left_join(world_pop) pd$value <- pd$deaths / pd$pop * 100000 pd <- pd %>% filter(value > 0) # cols <- rev(c('black', 'red')) cols <- colorRampPalette(RColorBrewer::brewer.pal(n = 8, 'Set1'))(length(unique(pd$country))) ggplot(data = pd, aes(x = date, y = value)) + theme_simple() + geom_line(aes(color = country), size = 2) + geom_point(aes(color = country)) + labs(x = '', y = '', title = 'Spain: Confirmed COVID-19 deaths per 100,000 population', subtitle = paste0('Data as of ', max(pd$date))) + theme(axis.title = element_blank(), axis.text = element_text(size = 20)) + geom_text(data = pd %>% filter(date == max(date)), aes(x = date +3, color = country, y = value, label =paste0(country, ": ", round(value, digits = 2))), alpha = 0.9) + scale_color_manual(name = '', values = cols) + scale_y_log10() + theme(legend.position = 'none') + xlim(min(pd$date), max(pd$date) +5)
Logarithmic:
plot_day_zero_esp(ccaa = sort(unique(esp_df$ccaa)), day0 = 50)
Linear:
plot_day_zero_esp(ccaa = sort(unique(esp_df$ccaa)), day0 = 50, ylog = F)
Logarithmic:
plot_day_zero_esp(ccaa = sort(unique(esp_df$ccaa)), day0 = 5, deaths = T)
Linear:
plot_day_zero_esp(ccaa = sort(unique(esp_df$ccaa)), day0 = 5, deaths = T, ylog = F)
adj <- esp_df %>% filter(date == max(date)) pop <- covid19::esp_pop joined <- left_join(adj, pop) # make vars joined <- joined %>% mutate(cases_per_k = (cases / pop) * 100000, deaths_per_k = (deaths / pop) * 100000) joined$value <- joined$deaths_per_k joined <- joined %>% arrange(value) joined$p <- joined$value / sum(joined$value) * 100 # joined$ccaa <- factor(joined$ccaa, # levels = joined$ccaa) text_size <- 10 ggplot(data = joined, aes(x = ccaa, y = value)) + geom_bar(stat = 'identity', fill = 'black') + theme_simple() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) + labs(x = '', y = 'Deaths', title = 'COVID-19 deaths in Spain (per 100,000)', # subtitle = 'Data as of evening of Sunday, March 15', caption = 'github.com/databrew/covid19 | joe@databrew.cc') + theme(legend.position = 'top', legend.text = element_text(size = text_size * 2), axis.title = element_text(size = text_size * 2), plot.title = element_text(size = text_size * 2.3), axis.text.x = element_text(size = text_size * 1.5)) + geom_text(data = joined, aes(x = ccaa, y = value, label = paste0(deaths, ' deaths\n(', round(value, digits = 1), ' per\n100,000)')), # label = paste0(deaths, '\n(', # round(p, digits = 1), '%)')), size = text_size * 0.25, nudge_y = 0.35) # ggsave('~/Desktop/spain.png')
adj <- esp_df %>% filter(date == max(date)) pop <- covid19::esp_pop joined <- left_join(adj, pop) # make vars joined <- joined %>% mutate(cases_per_k = (cases / pop) * 100000, deaths_per_k = (deaths / pop) * 100000) joined$value <- joined$cases_per_k joined <- joined %>% arrange(value) joined$p <- joined$value / sum(joined$value) * 100 # joined$ccaa <- factor(joined$ccaa, # levels = joined$ccaa) text_size <- 10 ggplot(data = joined, aes(x = ccaa, y = value)) + geom_bar(stat = 'identity', fill = 'black') + theme_simple() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) + labs(x = '', y = 'Cases', title = 'COVID-19 cases in Spain (per 100,000 people)', # subtitle = 'Data as of evening of Sunday, March 15', caption = 'github.com/databrew/covid19 | joe@databrew.cc') + theme(legend.position = 'top', legend.text = element_text(size = text_size * 2), axis.title = element_text(size = text_size * 2), plot.title = element_text(size = text_size * 2.3), axis.text.x = element_text(size = text_size * 1.5)) + geom_text(data = joined, aes(x = ccaa, y = value, label = paste0(cases, ' cases\n(', round(value, digits = 1), ' per\n100,000)')), # label = paste0(deaths, '\n(', # round(p, digits = 1), '%)')), size = text_size * 0.25, nudge_y = 12) # ggsave('~/Desktop/spain.png')
adj <- esp_df %>% filter(date == max(date)) pop <- covid19::esp_pop joined <- left_join(adj, pop) # make vars joined <- joined %>% mutate(cases_per_k = (cases / pop) * 100000, deaths_per_k = (deaths / pop) * 100000, uci_per_k = (uci / pop) * 100000) joined$value <- joined$uci_per_k joined <- joined %>% arrange(value) joined$p <- joined$value / sum(joined$value) * 100 # joined$ccaa <- factor(joined$ccaa, # levels = joined$ccaa) text_size <- 10 ggplot(data = joined, aes(x = ccaa, y = value)) + geom_bar(stat = 'identity', fill = 'black') + theme_simple() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) + labs(x = '', y = 'Cases', title = 'COVID-19: intensive care patients per 100,000', # subtitle = 'Data as of evening of Sunday, March 15', caption = 'github.com/databrew/covid19 | joe@databrew.cc') + theme(legend.position = 'top', legend.text = element_text(size = text_size * 2), axis.title = element_text(size = text_size * 2), plot.title = element_text(size = text_size * 2.3), axis.text.x = element_text(size = text_size * 1.5)) + geom_text(data = joined, aes(x = ccaa, y = value, label = paste0(uci, '\nadmissions per\n(', round(value, digits = 1), ' per\n100,000)')), # label = paste0(deaths, '\n(', # round(p, digits = 1), '%)')), size = text_size * 0.25, nudge_y = 0.4) # ggsave('~/Desktop/spain.png')
Start date of 150 cases, cases, logarithmic scale
plot_day_zero(countries = c('Spain', 'Italy'))
Start date of 150 cases, cases, linear scale
plot_day_zero(countries = c('Spain', 'Italy'), ylog = F)
Start date of 50 deaths, deahs, logarithmic scale
plot_day_zero(countries = c('Spain', 'Italy'), deaths = T, day0 = 50)
Start date of 150 cases, cases, linear scale
plot_day_zero(countries = c('Spain', 'Italy'), deaths = T, day0 = 50, ylog = F)
Ratio of deaths to cases
pd <- esp_df %>% filter(date == '2020-03-15') %>% dplyr::select(ccaa, deaths, cases) %>% mutate(deaths_per_case = deaths / cases * 1000) text_size = 10 ggplot(data = pd, aes(x = ccaa, y = deaths_per_case)) + geom_bar(stat = 'identity', fill = 'black') + theme_simple() + theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5)) + labs(x = '', y = 'Deaths per 1.000 confirmed cases', title = 'COVID-19: deaths per 1.000 cases', # subtitle = 'Data as of evening of Sunday, March 15', caption = 'github.com/databrew/covid19 | joe@databrew.cc') + theme(legend.position = 'top', legend.text = element_text(size = text_size * 2), axis.title = element_text(size = text_size * 2), plot.title = element_text(size = text_size * 2.3), axis.text.x = element_text(size = text_size * 1.5)) + geom_text(data = pd, aes(x = ccaa, y = deaths_per_case, label = paste0(deaths, ' deaths\n(', round(deaths_per_case, digits = 1), ' per\n1.000)')), # label = paste0(deaths, '\n(', # round(p, digits = 1), '%)')), size = text_size * 0.35, nudge_y = 5)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.