Horizon Graph

Los gráficos de horizonte son especialmente útiles cuando visualiza datos de series de tiempo que tienen un valor cercano a las marcas de datos.

Conjunto de datos (COVID-19 Dataset)

Conjunto de datos sobre la evolución de la pandemia COVID-19 en varios paises del mundo, entre los que destacan el número de casos confirmados, número de muertos y casos de recuperación.

Cargar librerías

## Warning: package 'tidyverse' was built under R version 4.2.2
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0      ✔ purrr   0.3.5 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.1 
## ✔ readr   2.1.3      ✔ forcats 0.5.2
## Warning: package 'ggplot2' was built under R version 4.2.2
## Warning: package 'tibble' was built under R version 4.2.2
## Warning: package 'tidyr' was built under R version 4.2.2
## Warning: package 'readr' was built under R version 4.2.2
## Warning: package 'purrr' was built under R version 4.2.2
## Warning: package 'dplyr' was built under R version 4.2.2
## Warning: package 'stringr' was built under R version 4.2.2
## Warning: package 'forcats' was built under R version 4.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## Warning: package 'ggHoriPlot' was built under R version 4.2.2
## Warning: package 'ggthemes' was built under R version 4.2.2

Cargado de datos

#Lectura de datos
data_covid19 <- read.csv("full_grouped.csv", sep=",")

Creación del vector de listado de países de Sudamérica

#Vector del listado de países de América
countries_sud <- c('Brazil','Colombia','Argentina','Peru','Venezuela','Chile','Ecuador','Bolivia','Paraguay','Uruguay','Guyana','Suriname','French Guiana','Falkland Islands')

Selección de datos del conjunto original

#Selección de datos
data_sud <- subset(data_covid19, Country.Region %in% countries_sud)
data_sud$Date <- as.Date(data_sud$Date, format =  "%Y-%m-%d")

Segmentación de la escala de valores (Casos confirmados)

#Comprobar valores outliers
val_cutpoints <- data_sud  %>% 
  mutate(outlier = between(Confirmed, quantile(Confirmed, 0.25, na.rm=T)- 1.5*IQR(Confirmed, na.rm=T),
      quantile(Confirmed, 0.75, na.rm=T)+ 1.5*IQR(Confirmed, na.rm=T))) %>% filter(outlier)

val_ori <- sum(range(val_cutpoints$Confirmed))/2
val_sca <- seq(range(val_cutpoints$Confirmed)[1], 
           range(val_cutpoints$Confirmed)[2], 
           length.out = 7)[-4]

Generación del gráfico

#Generación de gráfico
data_sud %>% ggplot() +
  geom_horizon(aes(Date, 
                   Confirmed,
                   fill = ..Cutpoints..), 
               origin = val_ori, horizonscale = val_sca) +
  scale_fill_hcl(palette = 'RdBu', reverse = T, name="Casos confirmados") +
  facet_grid(Country.Region~.) +
  theme_few() +
  theme(
    panel.spacing.y=unit(0, "lines"),
    strip.text.y = element_text(size = 7, angle = 0, hjust = 0),
    axis.text.y = element_blank(),
    axis.title.y = element_blank(),
    axis.ticks.y = element_blank(),
    panel.border = element_blank()
  ) +
  scale_x_date(expand=c(0,0), 
               date_breaks = "1 month", 
               date_labels = "%b") +
  xlab('Fecha') +
  ggtitle('Cantidad de casos confirmados en Sudamérica(Enero-Julio 2020)')
## Warning: The dot-dot notation (`..Cutpoints..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(Cutpoints)` instead.
## Warning: Using the `size` aesthetic in this geom was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` in the `default_aes` field and elsewhere instead.