/ Tecnologia / Raspberry Pi / R Estatísticas / Exemplos / ECDC - COVID-19 …

ECDC - COVID-19 no mundo - Casos x Óbitos

Países com mais de 200.000 casos confirmados

COVID-19: Casos x Óbitos nos países com mais de 200.000 casos confirmados
COVID-19: Casos x Óbitos nos países com mais de 200.000 casos confirmados

Este programa, escrito em R, gera um gráfico relacionando o número de casos com número de óbitos para os países com mais de 200.000 casos confirmados de COVID-19. Os dados são obtidos da página Download today’s data on the geographic distribution of COVID-19 cases worldwide do European Centre for Disease Prevention and Control (ECDC). Nesta página é mostrado como os dados mais atualizados podem ser lidos diretamente pelo código R, mas também é possível baixar o arquivo CSV e ler pelo programa, para evitar múltiplos downloads, no caso de haver vários programas que acessem estes mesmos dados. Os arquivos são atualizados diariamente.

Abaixo está mostrado o código do programa, mas antes de ser executado as bibliotecas utilizadas precisam ser instaladas no R do Raspberry Pi. A opção para ler os dados diretamente na Internet está comentada, enquanto a opção para ler o arquivo CSV baixado está ativa. Pode ser usada qualquer uma das duas opões, obtendo-se os mesmos resultados, desde que o arquivo baixado esteja atualizado. Os eixos dos gráficos estão em escala logarítimica, uma vez que a diferença de valores entre os países é muito grande.

#
# source('ecdc_country_cases_deaths.R')
#
# Programa para gerar um gráfico relacionando o número de casos com número de óbitos
# nos países com mais de 200.000 casos confirmados de COVID-19.
# Os dados são obtidos do:
# European Centre for Disease Prevention and Control (ECDC)
# Download today’s data on the geographic distribution of COVID-19 cases worldwide
# https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide

library(utils)
library(lubridate)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(gridExtra)
library(stringr)

# Ler os dados do ECDC no formato CSV
# ecdc <- read.csv("https://opendata.ecdc.europa.eu/covid19/casedistribution/csv", na.strings = "", fileEncoding = "UTF-8-BOM")
ecdc <- read.csv("~/R/dados/ecdc.csv", na.strings = "", fileEncoding = "UTF-8-BOM")

# Data dos dados = maior data encontrada no arquivo
lastUpdate = toString(max(parse_date_time(ecdc$dateRep, orders = "dmy")))

# Agregar casos e óbitos por país
dados <- aggregate(ecdc[,5:6], by=list(country = ecdc$countriesAndTerritories), FUN=sum)

# Modificar os nomes dos países (trocar sublinhado por espaço)
countries <- as.matrix(dados[, 1])
for (i in 1:nrow(countries)) {
	countries[i] <- str_replace_all(countries[i,], "_", " ")
}

# Adicionar os nomes modificados dos países aos dados
dados['country.new'] <- as.data.frame(countries)

# Limitar os dados aos países com mais de 200.00 casos confirmados
dados <- filter(dados, cases > 200000)

# Criar o gráfico
plot <- ggplot(dados, aes(x = cases, y = deaths)) +
	geom_text(
		aes(label = country.new),
		size = 3.5,
		hjust = "center",
		vjust = "center",
		color = "red",
		show.legend = FALSE,
		check_overlap = TRUE
	) +
	geom_smooth(
		method = "lm",
		color = "blue",
		show.legend = FALSE
	) +
	annotate(
		geom = "text",
		x = Inf,
		y = Inf,
		color = "black",
		hjust = "right",
		vjust = "top",
		size = 4,
		label = paste("Data: ", lastUpdate)
	) +
	annotate(
		geom = "text",
		x = Inf,
		y = min(dados$deaths) + 10,
		color = "gray",
		hjust = "right",
		size = 4.1,
		label = "(Gráfico log-log) "
	) +
	theme_minimal() +
	scale_x_log10(name = "Casos") +
	scale_y_log10(name = "Óbitos")

# Mostrar o gráfico
grid.arrange(plot,
	nrow=1,
	top = paste("COVID-19: Casos x Óbitos nos países com mais de 200.000 casos confirmados"),
	bottom = paste("Fonte: European Centre for Disease Prevention and Control (ECDC)\n",
					"(https://www.ecdc.europa.eu/en/covid-19/situation-updates)")
)