Mapa para visualizar las diferencias por CCAA en el impacto del Covid_19:

La librería rgdal nos permite importar las formas de las Comunidades y con la librería broom podemos convertir estas formas en la estructura de datos que necesitamos para construir unos mapas que de forma rápida y visual nos muestren la afectación por territorios.

Cifras totales a 1 de Mayo de 2020:

Datos de Fallecidos totales: drawing

Datos de Fallecidos por 1.000.000 habitantes: drawing


Gráficos para visualizar las diferencias por CCAA en la evolución diaria del Covid_19:

Separamos los datos de cada CCAA, para poder trabajar de forma independiente en cada una de ellas. Para ello, con la función nest() de la librería tidyr vamos a crear una lista con tantos elemntos como CCAA hay.

# data_nested <- data_0 %>%
          mutate(Comunidad=CCAA,
                  Fecha=as.Date(dmy(Fecha))) %>%
          tidyr::nest(-CCAA)

Después, la función map() de la librería purrr nos permite repetir cualquier acción para todos los elementos de la lista. En este caso, vamos a crear un gráfico para cada CCAA con muy poco código.

# plots <- purrr::map2(data_nested$data, data_nested$CCAA, .f = function(x,y) { data.frame(x) %>%
    mutate(Uci_MA_5 = zoo::rollapply(Uci_dia,list(-1:-5),mean,fill=NA),
           Death_MA_5 = zoo::rollapply(Muertos_dia,list(-1:-5),mean,fill=NA)) %>%
    na.omit() %>%
    mutate(Day_Uci_Over_Max=Uci_MA_5/max(Uci_MA_5),
           Day_Death_Over_Max=Death_MA_5/max(Death_MA_5)) %>%
    dplyr::select(Fecha, Day_Uci_Over_Max, Day_Death_Over_Max) %>%
    tidyr::pivot_longer(-Fecha, names_to="Variable", values_to="Porcentaje_sobre_max") %>%
    ggplot(aes(x=Fecha, y=Porcentaje_sobre_max, color=Variable)) +
    geom_line(aes(group=Variable), size=1) + 
    scale_y_continuous(labels=percent_format()) + 
    labs(x="Fecha", y="% sobre Máximo", title=y, caption="5 día Media Movil") + 
    theme(legend.title=element_blank(), axis.text.x=element_text(colour="gray30",size=9,angle=45, hjust=1), panel.background=element_rect(fill="gray98"), panel.grid.major=element_line(colour="gray92")) })

El gráfico nos muestra los casos diarios de Fallecidos e Ingresados en UCI en porcentaje respecto al día en que cada CCAA alcanzó su máximo de Fallecidos o de ingresos en UCI.

Para una Comunidad:
drawing

Para todas: drawing


Gráficos animados…

La librería gganimate nos permite animar gráficos, lo que es muy útil para analizar series temporales y ver visualmente la evolución y comportamiento de múltiples variables.

Este gráfico animado nos permite apreciar la evolución diaria en cada CCAA de:

  • Fallecidos diarios respecto al día en que hubieron más fallecidos en la correspondiente CCAA (%)
  • Ingresados en UCI diarios respecto al día en que hubieron más ingresos en UCI en la correspondiente CCAA (%)
  • El tamaño de los círculos representa el número de habitantes en cada CCAA.
  • Podemos separar las CCAA por atributos como: densidad de población por km cuadrado o % de habitantes que superan los 65 años de edad.
# p_facet <- ggplot(data_2, aes(x = Day_Uci_Over_Max, y=Day_Death_Over_Max, colour=Comunidad)) +
     geom_point(aes(size = Poblacion, alpha=Death_position), show.legend = FALSE) +
     geom_text(aes(label=Comunidad), hjust=-.5, show.legend = FALSE) +
     facet_wrap(~Densidad_Km2) + 
     scale_color_viridis_d() +
     scale_size(range = c(2, 15)) +
     labs(x = "% Uci s/Max", y = "% Muertes s/Max") +
     scale_y_continuous(labels=percent_format()) + 
     scale_x_continuous(labels=percent_format()) + 
     geom_vline(xintercept=1, col="red", linetype="dotted") +
     geom_hline(yintercept=1, col="red", linetype="dotted") +
     theme(panel.spacing.x = unit(1.2, "lines"), strip.background=element_rect(colour="black", fill="gray40", size=1, linetype="solid"), strip.text=element_text(face="bold", size=14, colour="white"), plot.title=element_text(face="bold",colour="gray30",size=14), plot.subtitle=element_text(face="bold",colour="gray30",size=15), axis.text=element_text(colour="gray30",size=12), axis.title=element_text(colour="gray30",size=15), panel.background=element_rect(fill="gray98"), panel.grid.major=element_line(colour="gray92"))

# p2_facet <- p_facet + transition_time(Fecha) +
     labs(title = "Dia: {frame_time}",
          subtitle = "Evolución COVID_19") +
     ease_aes('linear')

# animate(p2_facet, fps=2, height=700, width=1300, end_pause = 30)

Alt Text

Feel free to contact me if you need any help for your Company…