ECDC - COVID-19 no mundo - Novos casos e óbitos

Evolução nos quatro países com o maior número de casos acumulados

COVID-19: Evolução dos novos casos nos quatro países com o maior número de casos acumulados
COVID-19: Evolução dos novos casos nos quatro países com o maior número de casos acumulados

O gráfico acima mostra a evolução dos novos casos confirmados (últimas 24 horas) para os quatro países com o maior número de casos acumulados. Pode ser observado um acentuado crescimento no número de novos casos nos Estados Unidos e, também, um crescimento de novos casos no Brasil e na Rússia. Desses quatro países, somente a Índia apresenta uma tendência de baixa no final da curva ajustada.

COVID-19: Evolução dos novos casos nos quatro países com o maior número de casos acumulados
COVID-19: Evolução dos novos casos nos quatro países com o maior número de casos acumulados

O gráfico acima mostra a evolução dos novos óbitos (últimas 24 horas) para os quatro países com o maior número de casos acumulados. Pode ser observado um acentuado crescimento no número de novos óbitos nos Estados Unidos e, também, um crescimento de novos óbitos no Brasil e na Rússia. Somente a Índia apresenta uma tendência de estabilização dos novos óbitos no final da curva ajustada.

Dados

Os dados são baixados 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. O ECDC mudou para um cronograma de relatórios semanais da situação do COVID-19 na UE / EEE, Reino Unido e no restante do mundo em 17 de dezembro de 2020. Portanto, todas as atualizações diárias foram interrompidas a partir de 14 de dezembro.

Programa

Abaixo está mostrado o código do programa, escrito em R, que gera os gráficos mostrando os casos e óbitos novos (últimas 24 horas) para os quatro países com o maior número de casos acumulados de COVID-19 vistos acima. Antes de ser executado as bibliotecas utilizadas precisam ser instaladas. 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.

#
# source('ecdc_top_novos_casos_obitos.R')
#
# Programa para gerar dois gráficos mostrando os casos e óbitos novos (últimas
# 24 horas) para os quatro países com o maior número de casos acumulados de COVID-19.  
# As imagens dos gráficos são gravadas em disco no formato svg.
# Os dados são obtidos do:
# European Centre for Disease Prevention and Control (ECDC)
# Download the daily number of new reported cases of COVID-19 by country worldwid
# https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide
#
# Bibliotecas
library(utils)
library(lubridate)
library(scales)
library(ggplot2)
library(dplyr)
library(stringr)
library(svglite)

# 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")

# Casos e óbitos acumulados por país
acumCountry = aggregate(ecdc[,5:6], by=list(country = ecdc$countriesAndTerritories), FUN=sum)

# Os quatro países com o maior número de casos acumulados
topCountries = top_n(acumCountry, 4, cases)

# Manter apenas os dados dos países com as colunas que serão usadas
dados <- subset(ecdc, countriesAndTerritories %in% topCountries$country & cases > 0,
            select = c("dateRep", "cases", "deaths", "countriesAndTerritories"))

# Adicionar a coluna data a partir da coluna dateRep
dados$data <- dmy(dados$dateRep)

# Data dos dados = maior data encontrada nos dados
dataDados = toString(max(dados$data))

# Ordenar os dados por país e data
dados <- dados[order(dados$countriesAndTerritories, dados$data), ]

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

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

# Remover os dados anteriores a 15 de março de 2020
dados <- dados[dados$data >= "2020-03-15", ]

# Gerar o gráfico de casos novos
plotcases <- ggplot(dados, aes(data, cases, col = country)) +
	labs(
		title    = "COVID-19 no mundo: Evolução dos novos casos confirmados",
		subtitle = "Quatro países com o maior número de casos acumulados",
		x        = "Data",
		y        = "Casos novos (últimas 24 horas)",
		colour   = "País",
		caption  = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados)
	) +
	geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs"), se = F) +
	geom_point() +
	theme_minimal() +
	theme(
		legend.position = c(0.20 , 0.82)
	) +
	guides(
		color = guide_legend(override.aes = list(fill = NA))
	) +
	scale_x_date(
	    breaks = date_breaks("4 weeks"),
        labels = date_format("%d/%b/\n%Y")
    )

# Gerar o gráfico de óbitos novos
plotdeaths <- ggplot(dados, aes(data, deaths, col = country)) +
	labs(
		title   = "COVID-19 no mundo: Evolução dos novos óbitos confirmados",
		subtitle = "Quatro países com o maior número de casos acumulados",
		x       = "Data",
		y       = "Óbitos novos (últimas 24 horas)",
		colour  = "País",
		caption = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados)
	) +
	geom_smooth(method = "gam", formula = y ~ s(x, bs = "cs"), se = F) +
	geom_point() +
	theme_minimal() +
	theme(
		legend.position = c(0.70 , 0.82)
	) +
	guides(
		color = guide_legend(override.aes = list(fill = NA))
	) +
	scale_y_continuous(
		limits = c(0, 2750)
	) +
	scale_x_date(
	    breaks = date_breaks("4 weeks"),
        labels = date_format("%d/%b/\n%Y")
    )

# Gravar as imagens dos gráficos no disco
ggsave("../img/ecdc_top_novos_casos.svg", plotcases, device=svg())
ggsave("../img/ecdc_top_novos_obitos.svg", plotdeaths, device=svg())