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

Países com mais de 300.000 casos confirmados

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

O gráfico acima relaciona o número de casos com número de óbitos para os países com mais de 300.000 casos confirmados de COVID-19, permitindo observar a situação de cada país individualmente e com relação aos demais países e a linha ajustada entre eles. Pode ser visto que os Estados Unidos, Índia e Brasil lideram no número de casos, enquanto o México tem um número de óbitos alto com relação ao número de casos.

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 para gerar o gráfico escrito em R, mas 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. Os eixos do gráfico 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 300.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
#
# Bibliotecas
library(utils)
library(lubridate)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(gridExtra)
library(stringr)
library(scales)

# 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
dataDados = 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 300.00 casos confirmados
dados <- filter(dados, cases > 300000)

# Criar o gráfico
plot <- ggplot(dados, aes(x = cases, y = deaths)) +
    labs(
        title = paste("Covid-19: Casos x óbitos acumulados até ", dataDados, " por país"),
        subtitle = "Países com mais de 300.000 casos confirmados",
        caption = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados),
        x = "Casos",
        y = "Óbitos"
    ) +
    geom_text_repel(
        aes(label = country.new),
        size = 3.5,
        hjust = "center",
        vjust = "center",
        color = "#EE0000FF",
        show.legend = FALSE
    ) +
    geom_smooth(
        method = "lm",
        color = "#3B4992FF",
        show.legend = FALSE
    ) +
    annotate(
        geom = "text",
        x = Inf,
        y = min(dados$deaths) + 10,
        color = "gray",
        hjust = "right",
        size = 3.5,
        label = "(Gráfico log-log) "
    ) +
    theme_minimal() +
    scale_x_log10() +
    scale_y_log10(labels = scientific)

# Gravar as imagens dos gráficos no disco
ggsave("../img/ecdc_country_cases_deaths.svg", plot,
       device=svg(), width = 8.0, height = 4.5)