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:
Datos de Fallecidos por 1.000.000 habitantes:
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:
Para todas:
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)