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

Países com mais de 300.000 casos confirmados

Casos de Covid-19 acumulados por país
Casos de Covid-19 acumulados por país

O gráfico acima mostra os casos de Covid-19 acumulados por país, para os países com mais de 300.000 casos confirmados. A diferença entre os três países com mais casos acumulados (EUA, Índia e Brasil) para os demais países é significativa.

Óbitos por Covid-19 acumulados por país
Óbitos por Covid-19 acumulados por país

O gráfico acima mostra os óbitos por Covid-19 acumulados por país, para os países com mais de 300.000 casos confirmados.

Letalidade da Covid-19 por país
Letalidade da Covid-19 por país

O gráfico acima mostra a taxa de letalidade (óbitos/casos) da Covid-19 por país, para os países com mais de 300.000 casos confirmados.

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 acumulados por país. 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_countries_bar_plot.R')
#
# Programa para gerar três gráficos de barras, o primeiro contendo o
# número de casos acumulados, o segundo o número de óbitos acumulados,
# e o terceiro a taxa de letalidade para os países com mais de 300.000
# casos 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(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")
  
# Criar um quadro de dados contendo os dados da ECDC convertendo a data
df <- data.frame(data = parse_date_time(ecdc$dateRep, orders = "dmy"),
                 country = ecdc$countriesAndTerritories,
                 continent = ecdc$continentExp,
                 cases = ecdc$cases,
                 deaths = ecdc$deaths)

# Data dos dados = maior data do arquivo
dataDados = toString(max(df$data))
  
# Criar um quadro de dados contendo os somatórios de casos e mortes por país
sum_cases_deaths <- aggregate(df[,4:5], by=list(country = df$country), FUN=sum)
 
# Manter somente os países com mais de 300.000 casos acumulados
top_countries <- sum_cases_deaths[sum_cases_deaths$cases > 300000, ]

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

# Letalidade (%)
top_countries['lethality'] <- top_countries['deaths']/top_countries['cases']

# Preparar os dados para os gráficos
cases <- select(top_countries, country = country.new, qty = cases)
cases$label <- 'Casos'
deaths <- select(top_countries, country = country.new, qty = deaths)
deaths$label <- 'Óbitos'
lethality <- select(top_countries, country = country.new, qty = lethality)
lethality$label <- 'Letalidade'

# Gráfico de casos acumulados
plot_cases <- ggplot(cases, aes(x = country, y = qty, fill = label)) +
    labs(
        title = paste("Casos de Covid-19 acumulados até ", dataDados, " por país"),
        caption = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados),
        x = "Países com mais de 300.000 casos confirmados de COVID-19",
        y = "Casos"
    ) +
    geom_bar(
        stat = "identity",
        fill = "#5F559BFF"
    ) +
    coord_flip() +
    guides(fill = guide_legend(title = NULL)) +
    theme_minimal() +
    theme(legend.position = c(0.90 , 0.95)) +
    xlim(rev(levels(cases$country))) +
    scale_y_continuous(labels = scientific)

# Gráfico de óbitos acumulados
plot_deaths <- ggplot(deaths, aes(x = country, y = qty, fill = label)) +
    labs(
        title = paste("Óbitos por Covid-19 acumulados até ", dataDados, " por país"),
        caption = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados),
        x = "Países com mais de 300.000 casos confirmados de COVID-19",
        y = "Casos"
    ) +
    geom_bar(
        stat = "identity",
        fill = "#A20056FF"
    ) +
    coord_flip() +
    guides(fill = guide_legend(title = NULL)) +
    theme_minimal() +
    theme(legend.position = "none") +
    xlim(rev(levels(deaths$country))) +
    scale_y_continuous(labels = scientific, limits=c(0, 300000))

# Gráfico de letalidade
plot_lethality <- ggplot(lethality, aes(x = country, y = qty, fill = label)) +
    labs(
        title = paste("Taxa de letalidade da Covid-19 até ", dataDados, " por país em %"),
        caption = paste("Dados baixados do ECDC (https://www.ecdc.europa.eu/en) em", dataDados),
        x = "Países com mais de 300.000 casos confirmados de COVID-19",
        y = "Casos"
    ) +
    geom_bar(
        stat = "identity",
        fill = "#008280FF"
    ) +
    coord_flip() +
    guides(fill = guide_legend(title = NULL)) +
    theme_minimal() +
    theme(legend.position = "none") +
    xlim(rev(levels(deaths$country))) +
    scale_y_continuous(labels = percent, limits=c(0, 0.10))

# Gravar as imagens dos gráficos no disco
ggsave("../img/ecdc_top_countries_bar_plot_cases.svg", plot_cases, device=svg())
ggsave("../img/ecdc_top_countries_bar_plot_deaths.svg", plot_deaths, device=svg())
ggsave("../img/ecdc_top_countries_bar_plot_lethality.svg", plot_lethality, device=svg())