Este conjunto de scripts sirve para ver el estado de vacunación de una autonomÃa. Por defecto sirve para Madrid pero cambiando dos variables puede servir para otra.
Hasta la fecha solo la he utilizado para Madrid (color rojo) y para AndalucÃa (color verde)
theme_a <- function(base_size = 9,
base_family = "sans"
)
{
tema <-
theme_bw(base_size=base_size) +
theme(legend.position="top") +
theme(legend.text = element_text(size=base_size,family = base_family)) +
theme(plot.title=element_text(size=base_size+2,
vjust=1.25,
family=base_family,
hjust = 0.5
)) +
theme(plot.subtitle=element_text(size=base_size-1, family = base_family)) +
theme(text = element_text(size=base_size-1,family = base_family)) +
theme(axis.text.x=element_text(size=base_size,family = base_family)) +
theme(axis.text.y=element_text(size=base_size, family = base_family)) +
theme(axis.title.x=element_text(size=base_size, vjust=0, family = base_family)) +
theme(axis.title.y=element_text(size=base_size, vjust=1.25, family = base_family)) +
theme(plot.caption=element_text(size=base_size-2, family = base_family)) +
theme(strip.text = element_text(size=base_size+2, family = base_family)) +
theme(strip.text.x = element_text(size=base_size+1, family = base_family)) +
theme(strip.text.y = element_text(size=base_size+1,, family = base_family))
return (tema)
}
library(tidyverse)
library(ggrepel) # para etiquetas
library(RColorBrewer)
library(ggpubr)
######## Cofigurae AutonomÃa ######
autonomia = "Madrid"
#autonomia = "AndalucÃa"
paleta_andalucia <- brewer.pal(n = 16, name = "Greens")
paleta_madrid <- brewer.pal(n = 16, name = "Reds")
color_ccaa = paleta_madrid
##############################
url_file_vacunas<- "https://raw.githubusercontent.com/montera34/escovid19data/master/data/original/vacunas/estado_vacunacion_.csv"
url_ccaas_poblacion <- "https://raw.githubusercontent.com/montera34/escovid19data/master/data/original/provincias-poblacion.csv"
ccaa_INE <- c("01 AndalucÃa","02 Aragón","03 Asturias, Principado de","04 Balears, Illes","05 Canarias",
"06 Cantabria","07 Castilla y León","08 Castilla - La Mancha","09 Cataluña",
"10 Comunitat Valenciana","11 Extremadura","12 Galicia","13 Madrid, Comunidad de",
"14 Murcia, Región de","15 Navarra, Comunidad Foral de","16 PaÃs Vasco",
"17 Rioja, La", "18 Ceuta", "19 Melilla")
ccaa <- c("AndalucÃa", "Aragón", "Asturias", "Baleares", "Canarias" ,
"Cantabria", "Castilla y Leon", "Castilla La Mancha","Cataluña",
"C. Valenciana","Extremadura", "Galicia", "Madrid",
"Murcia","Navarra","PaÃs Vasco",
"La Rioja","Ceuta","Melilla")
ccaa_names <- data_frame(ccaa_INE=ccaa_INE,
ccaa=ccaa )
print (ccaa_names)
## # A tibble: 19 x 2
## ccaa_INE ccaa
## <chr> <chr>
## 1 01 AndalucÃa AndalucÃa
## 2 02 Aragón Aragón
## 3 03 Asturias, Principado de Asturias
## 4 04 Balears, Illes Baleares
## 5 05 Canarias Canarias
## 6 06 Cantabria Cantabria
## 7 07 Castilla y León Castilla y Leon
## 8 08 Castilla - La Mancha Castilla La Mancha
## 9 09 Cataluña Cataluña
## 10 10 Comunitat Valenciana C. Valenciana
## 11 11 Extremadura Extremadura
## 12 12 Galicia Galicia
## 13 13 Madrid, Comunidad de Madrid
## 14 14 Murcia, Región de Murcia
## 15 15 Navarra, Comunidad Foral de Navarra
## 16 16 PaÃs Vasco PaÃs Vasco
## 17 17 Rioja, La La Rioja
## 18 18 Ceuta Ceuta
## 19 19 Melilla Melilla
autonomias_poblacion <- read_csv2( "https://www.ine.es/jaxiT3/files/t/es/csv_bdsc/2853.csv?nocab=1") %>%
rename (c("ccaa_INE"="Comunidades y Ciudades Autónomas" )) %>%
rename (c("poblacion"="Total" )) %>%
filter (Periodo == "2020" &
Sexo == "Total" &
ccaa_INE != "Total") %>%
select ("ccaa_INE","poblacion") %>%
right_join (ccaa_names)
vacunas <- read_csv( url_file_vacunas )
vacunas <- vacunas %>%
mutate_if(is.numeric, replace_na, 0)
vacunas <-left_join ( vacunas,autonomias_poblacion, by = "ccaa" )
vacunas$date_pub <- as.Date(vacunas$date_pub,format= "%d/%m/%y")
vacunas <- filter (vacunas, ccaa == autonomia)
print (vacunas)
## # A tibble: 58 x 15
## date_pub ccaa `Dosis entregad~ `Dosis entregad~ `Dosis entregad~
## <date> <chr> <dbl> <dbl> <dbl>
## 1 2021-01-04 Madr~ 0 0 0
## 2 2021-01-05 Madr~ 0 0 0
## 3 2021-01-07 Madr~ 0 0 0
## 4 2021-01-08 Madr~ 0 0 0
## 5 2021-01-11 Madr~ 0 0 0
## 6 2021-01-12 Madr~ 0 0 0
## 7 2021-01-13 Madr~ 0 0 0
## 8 2021-01-14 Madr~ 147540 4700 0
## 9 2021-01-15 Madr~ 147540 4700 0
## 10 2021-01-18 Madr~ 147540 4700 0
## # ... with 48 more rows, and 10 more variables: `Dosis entregadas` <dbl>,
## # `Dosis administradas` <dbl>, `% sobre entregadas` <dbl>, `Total pauta
## # completada` <dbl>, `Última fecha de actualización de datos` <chr>, `Fecha
## # de la ultima vacuna registrada` <chr>, source_name <chr>, source <chr>,
## # ccaa_INE <chr>, poblacion <dbl>
names (vacunas)
## [1] "date_pub"
## [2] "ccaa"
## [3] "Dosis entregadas Pfizer"
## [4] "Dosis entregadas Moderna"
## [5] "Dosis entregadas AstraZeneca"
## [6] "Dosis entregadas"
## [7] "Dosis administradas"
## [8] "% sobre entregadas"
## [9] "Total pauta completada"
## [10] "Última fecha de actualización de datos"
## [11] "Fecha de la ultima vacuna registrada"
## [12] "source_name"
## [13] "source"
## [14] "ccaa_INE"
## [15] "poblacion"
vacunas <- vacunas %>%
mutate ( porcent_dedicado_pauta_completa = (`Total pauta completada` *2 )/poblacion) %>%
mutate ( porcent_dosis = (`Dosis administradas` )/poblacion) %>%
mutate ( porcent_una_dosis = (`Dosis administradas`- `Total pauta completada`) / poblacion ) %>%
mutate ( porcent_primera_dosis = (`Dosis administradas` - (`Total pauta completada`*2)) / poblacion ) %>%
mutate ( porcent_segunda_dosis = `Total pauta completada` /poblacion ) %>%
mutate ( second_dosis_day = `Total pauta completada` - lag(`Total pauta completada`, default = 0) ) %>%
mutate ( dosis_day = `Dosis administradas` - lag(`Dosis administradas`,
default = 0) ) %>%
mutate ( entregadas_Pfizer_day = `Dosis entregadas Pfizer` -
lag (`Dosis entregadas Pfizer`, default = 0) ) %>%
mutate ( entregadas_AstraZeneca_day = `Dosis entregadas AstraZeneca` -
lag (`Dosis entregadas AstraZeneca`, default = 0) ) %>%
mutate ( entregadas_Moderna_day = `Dosis entregadas Moderna` -
lag (`Dosis entregadas Moderna`, default = 0) ) %>%
mutate ( tasa_second_dosis_day = (second_dosis_day *100000)/poblacion ) %>%
mutate ( tasa_dosis_day = (dosis_day * 100000)/poblacion) %>%
mutate ( tasa_entregadas_AstraZeneca_day = (entregadas_AstraZeneca_day *100000)/poblacion ) %>%
mutate ( tasa_entregadas_Pfizer_day = (entregadas_Pfizer_day *100000)/poblacion ) %>%
mutate ( tasa_entregadas_Moderna_day = (entregadas_Moderna_day *100000)/poblacion ) %>%
mutate_if(is.numeric, ~replace(., is.na(.), 0)) %>%
filter (date_pub > min(date_pub))
print (vacunas)
## # A tibble: 57 x 30
## date_pub ccaa `Dosis entregad~ `Dosis entregad~ `Dosis entregad~
## <date> <chr> <dbl> <dbl> <dbl>
## 1 2021-01-05 Madr~ 0 0 0
## 2 2021-01-07 Madr~ 0 0 0
## 3 2021-01-08 Madr~ 0 0 0
## 4 2021-01-11 Madr~ 0 0 0
## 5 2021-01-12 Madr~ 0 0 0
## 6 2021-01-13 Madr~ 0 0 0
## 7 2021-01-14 Madr~ 147540 4700 0
## 8 2021-01-15 Madr~ 147540 4700 0
## 9 2021-01-18 Madr~ 147540 4700 0
## 10 2021-01-19 Madr~ 147540 4700 0
## # ... with 47 more rows, and 25 more variables: `Dosis entregadas` <dbl>,
## # `Dosis administradas` <dbl>, `% sobre entregadas` <dbl>, `Total pauta
## # completada` <dbl>, `Última fecha de actualización de datos` <chr>, `Fecha
## # de la ultima vacuna registrada` <chr>, source_name <chr>, source <chr>,
## # ccaa_INE <chr>, poblacion <dbl>, porcent_dedicado_pauta_completa <dbl>,
## # porcent_dosis <dbl>, porcent_una_dosis <dbl>, porcent_primera_dosis <dbl>,
## # porcent_segunda_dosis <dbl>, second_dosis_day <dbl>, dosis_day <dbl>,
## # entregadas_Pfizer_day <dbl>, entregadas_AstraZeneca_day <dbl>,
## # entregadas_Moderna_day <dbl>, tasa_second_dosis_day <dbl>,
## # tasa_dosis_day <dbl>, tasa_entregadas_AstraZeneca_day <dbl>,
## # tasa_entregadas_Pfizer_day <dbl>, tasa_entregadas_Moderna_day <dbl>
max_date <- max(vacunas$date_pub)
min_date <- min(vacunas$date_pub)
cols <- c("% Al menos una dosis"= color_ccaa [5],"% La 2ª dosis"= color_ccaa [8], "% Administradas" = "grey",
"Dedicado a pauta completada" ="black")
fig1_1 <-
ggplot( data = vacunas)+
geom_area(aes(x = date_pub, y = porcent_dosis, fill="% Administradas"),
alpha =0.7) +
geom_area(aes(x = date_pub, y = porcent_una_dosis, fill="% Al menos una dosis"),
alpha =0.7) +
geom_area(aes(x = date_pub, y = porcent_segunda_dosis, fill="% La 2ª dosis"),
alpha =0.7) +
geom_line(aes(x = date_pub, y = porcent_dedicado_pauta_completa, color = "Dedicado a pauta completada"),
color="black",
linetype = "dashed") +
geom_text(data = vacunas %>% top_n(1, date_pub),
aes( x = date_pub, y = porcent_dosis,
label=paste0 (round((porcent_dosis*100),1),'%')),
color="black",
size =3.5,
hjust = 1,
vjust = -0.1) + # adjust the starting y position of the text label
geom_text(data = vacunas %>% top_n(1, date_pub),
aes( x = date_pub, y = porcent_una_dosis,
label=paste0 (round((porcent_una_dosis*100),1),'%')),
color="black",
size =3.5,
hjust = 1,
vjust = -0.1) + # adjust the starting y position of the text label
geom_text(data = vacunas %>% top_n(1, date_pub),
aes( x = date_pub, y = porcent_segunda_dosis,
label=paste0 (round((porcent_segunda_dosis*100),1),'%')),
color="black",
size =3.5,
hjust = 1,
vjust = -0.1) + # adjust the starting y position of the text label
labs(title = "Porcentaje de vacunación")+
scale_x_date( limits=c (min_date,max_date),
expand = c(0,0)) +
scale_y_continuous(labels=scales::percent_format(accuracy = 1L),
expand = c(0,0,0.015,0.015),
breaks=seq(0, max(vacunas$porcent_dosis) + 0.1,
by = 0.05)) +
scale_fill_manual(name ="",
values = cols )+
theme_a()+
theme(axis.title.y=element_blank(),
axis.title.x=element_blank(),
legend.position="top")
plot (fig1_1)
max_date <- max(vacunas$date_pub)
min_date <- min(vacunas$date_pub)
cols <- c("Total dosis"= color_ccaa [5],"2ª dosis"= color_ccaa[8])
vacunas <- arrange (vacunas,date_pub)
fig1_2 <-
ggplot()+
geom_col(data = vacunas,
aes(x = date_pub, y = tasa_dosis_day, fill="Total dosis"),
alpha =0.7) +
geom_col(data = vacunas,
aes(x = date_pub, y = tasa_second_dosis_day, fill="2ª dosis"),
alpha =0.7) +
labs(title = "Vacunas diarias por 100.000 habitantes") +
scale_x_date( limits=c (min_date-1,max_date+1),
expand = c(0,0)) +
scale_y_continuous(expand = c(0,0),
limit = c(0,max(vacunas$tasa_dosis_day) + 100),) +
scale_fill_manual(name = "", values = cols )+
scale_color_manual(name = "", values = cols )+
theme_a()+
theme(axis.title.y=element_blank(),
axis.title.x=element_blank(),
legend.position="top")
plot (fig1_2)
fig4 <- ggarrange(fig1_2, fig1_1, widths = c(2,2))
annotate_figure(fig4,
top = text_grob("Estado de vacunación en autonomia", face = "bold", size = 12),
bottom = text_grob("@congosto\nFuente: @escovid19data",
hjust = 1, x = 1, face = "italic", size = 10))
## Gráficas por tipo de vacuna
#### pivotamos los tipos de vacunas
vacunas_tipo <- pivot_longer(vacunas,
`Dosis entregadas Pfizer` |
`Dosis entregadas AstraZeneca`|
`Dosis entregadas Moderna`,
names_to="tipo_vacuna",
values_to="entregadas_tipo") %>%
mutate ( tasa_entregadas_tipo = (entregadas_tipo * 100000)/poblacion)
my_color <- brewer.pal(n = 16, name = "Set1") #paleta divergente
cols <- c("Dosis entregadas Pfizer"= my_color [1],
"Dosis entregadas AstraZeneca"= my_color [2],
"Dosis entregadas Moderna" = my_color [3])
orden_vacunas = c("Dosis entregadas Moderna",
"Dosis entregadas AstraZeneca",
"Dosis entregadas Pfizer")
labs <- c("Moderna",
"AstraZeneca",
"Pfizer")
vacunas_tipo$tipo_vacuna <- factor (vacunas_tipo$tipo_vacuna,levels=orden_vacunas)
max_date <- max(vacunas$date_pub)
min_date <- min(vacunas$date_pub)
fig2_1 <-
ggplot( data = vacunas_tipo, aes(x = date_pub))+
geom_area(aes( y = tasa_entregadas_tipo, fill=tipo_vacuna),
alpha =0.7) +
labs(caption = "Suministros por 100.000 habitantes")+
scale_x_date( limits=c (min_date,max_date),
expand = c(0,0)) +
scale_y_continuous(expand = c(0,0)) +
#limit = c(0,max(vacunas$tasa_entregadas_tipo) + 0.03),
#breaks=seq(0, max(vacunas$porcent_una_dosis) + 0.1,
# by = 0.05)) +
scale_fill_manual (name="", values = cols,
label = labs
) +
theme_a()+
theme(axis.title.y=element_blank(),
axis.title.x=element_blank(),
legend.position="bottom") +
theme(plot.caption=element_text(size=13,
vjust=1.25,
hjust = 0.5))
plot (fig2_1)
vacunas_tipo <- pivot_longer(vacunas,
tasa_entregadas_AstraZeneca_day |
tasa_entregadas_Pfizer_day |
tasa_entregadas_Moderna_day,
names_to = "tipo_vacuna_day",
values_to = "tasa_tipo_vacuna_day")
print (vacunas_tipo)
## # A tibble: 171 x 29
## date_pub ccaa `Dosis entregad~ `Dosis entregad~ `Dosis entregad~
## <date> <chr> <dbl> <dbl> <dbl>
## 1 2021-01-05 Madr~ 0 0 0
## 2 2021-01-05 Madr~ 0 0 0
## 3 2021-01-05 Madr~ 0 0 0
## 4 2021-01-07 Madr~ 0 0 0
## 5 2021-01-07 Madr~ 0 0 0
## 6 2021-01-07 Madr~ 0 0 0
## 7 2021-01-08 Madr~ 0 0 0
## 8 2021-01-08 Madr~ 0 0 0
## 9 2021-01-08 Madr~ 0 0 0
## 10 2021-01-11 Madr~ 0 0 0
## # ... with 161 more rows, and 24 more variables: `Dosis entregadas` <dbl>,
## # `Dosis administradas` <dbl>, `% sobre entregadas` <dbl>, `Total pauta
## # completada` <dbl>, `Última fecha de actualización de datos` <chr>, `Fecha
## # de la ultima vacuna registrada` <chr>, source_name <chr>, source <chr>,
## # ccaa_INE <chr>, poblacion <dbl>, porcent_dedicado_pauta_completa <dbl>,
## # porcent_dosis <dbl>, porcent_una_dosis <dbl>, porcent_primera_dosis <dbl>,
## # porcent_segunda_dosis <dbl>, second_dosis_day <dbl>, dosis_day <dbl>,
## # entregadas_Pfizer_day <dbl>, entregadas_AstraZeneca_day <dbl>,
## # entregadas_Moderna_day <dbl>, tasa_second_dosis_day <dbl>,
## # tasa_dosis_day <dbl>, tipo_vacuna_day <chr>, tasa_tipo_vacuna_day <dbl>
max_date <- max(vacunas$date_pub)
min_date <- min(vacunas$date_pub)
my_color <- brewer.pal(n = 16, name = "Set1") #paleta divergente
cols <- c("tasa_entregadas_Pfizer_day"= my_color [1],
"tasa_entregadas_AstraZeneca_day"= my_color [2],
"tasa_entregadas_Moderna_day" = my_color [3])
orden_vacunas = c("tasa_entregadas_Moderna_day",
"tasa_entregadas_AstraZeneca_day",
"tasa_entregadas_Pfizer_day")
labs <- c("Moderna",
"AstraZeneca",
"Pfizer")
vacunas_tipo$tipo_vacuna_day <- factor (vacunas_tipo$tipo_vacuna_day,levels=orden_vacunas)
fig2_2 <-
ggplot()+
geom_col(data = vacunas_tipo,
aes(x = date_pub, y = tasa_tipo_vacuna_day, fill=tipo_vacuna_day),
position = "stack",
alpha =0.7) +
labs(caption = "Suministros diarios por 100.000 habitantes") +
scale_x_date( limits=c (min_date-1,max_date+1),
expand = c(0,0)) +
scale_y_continuous(expand = c(0,0)) +
scale_fill_manual (name="", values = cols,
label = labs) +
theme_a()+
theme(axis.title.y=element_blank(),
axis.title.x=element_blank(),
legend.position="bottom")+
theme(plot.caption=element_text(size=11,
vjust=1.25,
hjust = 0.5))
plot (fig2_2)
fig4 <- ggarrange(fig2_2,fig2_1, widths = c(2,2))
annotate_figure(fig4,
top = text_grob(paste ("Estado de vacunación en",autonomia,max_date), face = "bold", size = 12),
bottom = text_grob("@congosto\nFuente: @escovid19data",
hjust = 1, x = 1, face = "italic", size = 10))
fig5 <- ggarrange(fig1_2,fig1_1,fig2_2,fig2_1,
ncol = 2, nrow = 2,
widths = c(2,2),
heights = c(2,2),
align = "v")
annotate_figure(fig5,
top = text_grob(paste ("Estado de vacunación en",autonomia,max_date),face = "bold", size = 12),
bottom = text_grob("@congosto\nFuente: @escovid19data",
hjust = 1, x = 1, face = "italic", size = 10))+
theme(plot.margin = unit(c(0,0.5,0,0.5), "cm"))