Evolución de la semana
La comunidad de Madrid proporciona datos de la incidencia acumulada de los Ćŗltimos 14 dĆas (IA14) de covid19 en mayores de 60 aƱos desglosada por municipios y distritos de la capital.
theme_a <- function(base_size = 12,
base_family = "sans"
)
{
tema <-
theme_bw(base_size=base_size) +
theme(legend.position="top") +
theme(legend.text = element_text(size=base_size+1,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, 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+1, family = base_family)) +
theme(strip.text.x = element_text(size=base_size, family = base_family)) +
theme(strip.text.y = element_text(size=base_size, family = base_family))
return (tema)
}
library(tidyverse)
library(knitr)
library(viridis)
library(stringr)
require(RCurl)
# library(sparkline)
locale(date_names = "es", date_format = "%AD", time_format = "%AT",
decimal_mark = ",", grouping_mark = ".", tz = "UTC",
encoding = "UTF-8", asciify = FALSE)
## <locale>
## Numbers: 123.456,78
## Formats: %AD / %AT
## Timezone: UTC
## Encoding: UTF-8
## <date_names>
## Days: domingo (dom.), lunes (lun.), martes (mar.), miƩrcoles (miƩ.), jueves
## (jue.), viernes (vie.), sƔbado (sƔb.)
## Months: enero (ene.), febrero (feb.), marzo (mar.), abril (abr.), mayo (may.),
## junio (jun.), julio (jul.), agosto (ago.), septiembre (sept.),
## octubre (oct.), noviembre (nov.), diciembre (dic.)
## AM/PM: a. m./p. m.
file_serie_madrid <- "https://datos.comunidad.madrid/catalogo/dataset/a5a761f9-c32f-4515-a878-bd4098cce79f/resource/99cd404e-5a94-4eda-915d-b7025815780c/download/covid19_tia_muni_y_distritos_s_60ymas.csv"
serie_madrid <- read_csv2(file_serie_madrid,locale = locale(encoding = 'ISO-8859-1'))
#serie_madrid <- read_csv2(file_serie_madrid)
serie_madrid$fecha_informe <- as.Date(serie_madrid$fecha_informe,format= "%Y/%m/%d")
#serie_madrid$fecha_informe <- as.Date(serie_madrid$fecha_informe,format= "%d/%m/%Y")
print (serie_madrid)
## # A tibble: 2,786 Ć 5
## municipio_distrito fecha_informe casos_confirmados_⦠tasa_incidenciaā¦
## <chr> <date> <dbl> <dbl>
## 1 Madrid-Retiro 2022-07-05 489 1250.
## 2 Madrid-Salamanca 2022-07-05 556 1258.
## 3 Madrid-Centro 2022-07-05 415 1385.
## 4 Madrid-Arganzuela 2022-07-05 747 1814.
## 5 Madrid-ChamartĆn 2022-07-05 578 1333.
## 6 Madrid-TetuƔn 2022-07-05 528 1326.
## 7 Madrid-ChamberĆ 2022-07-05 528 1249.
## 8 Madrid-Fuencarral-El Pardo 2022-07-05 932 1416.
## 9 Madrid-Moncloa-Aravaca 2022-07-05 536 1574.
## 10 Madrid-Latina 2022-07-05 1371 1899.
## # ⦠with 2,776 more rows, and 1 more variable: codigo_geometria <chr>
serie_madrid <- serie_madrid %>%
mutate (year = as.integer(format(fecha_informe, format="%Y")) -2020) %>%
mutate (week = (as.integer(format(fecha_informe, format="%U"))+1 )+(52*year)) %>%
mutate (Capital = ifelse (str_detect(municipio_distrito, "^Madrid"), "SĆ", "No" ))
last_week <- max(serie_madrid$week,na.rm = TRUE)
last_week_text <- last_week %% 53
value_last_week <- serie_madrid %>% filter (week == last_week )
cm_max_value <- round(max(value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias,na.rm = TRUE))
cd_min_value <- round(min(value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias,na.rm = TRUE))
cd_mean <- mean (value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias)
cap_value_last_week <- serie_madrid %>% filter (week == last_week) %>% filter (Capital == "SĆ")
cap_max_value <- round(max(cap_value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias,na.rm = TRUE))
cap_min_value <- round(min(cap_value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias,na.rm = TRUE))
cap_mean <- mean(cap_value_last_week$tasa_incidencia_acumulada_P60mas_ultimos_14dias)
distritos <- serie_madrid %>% filter (week == last_week ) %>%
filter (Capital == "SĆ") %>%
select(municipio_distrito ) %>%
arrange (municipio_distrito)
Es una parte cómun a todas las grÔficas de variación y se centralkizan en una función para no repetir código
select_last_weeks <- function (df,indicator,since,to){
library(ggalt)
diff <- mutate (df,indicator=df[[indicator]]) %>%
filter (!is.na (indicator) ) %>%
filter (week == last_week | week == last_week-1 ) %>%
mutate (week_order = ifelse(week == last_week, "indicator_last_week","indicator_pre_last_week")) %>%
pivot_wider (names_from=week_order,values_from= indicator) %>%
group_by(municipio_distrito) %>%
summarise ( indicator_last_week = sum (indicator_last_week,na.rm = TRUE),
indicator_pre_last_week = sum (indicator_pre_last_week,na.rm = TRUE) ,
indicator_diff = indicator_last_week - indicator_pre_last_week,na.rm = TRUE,
distrito = municipio_distrito) %>%
distinct(municipio_distrito,indicator_last_week,indicator_pre_last_week,
indicator_diff,distrito) %>%
filter (indicator_last_week > 0 & indicator_pre_last_week > 0) %>%
#mutate(ajuste_text = ifelse(indicator_diff >0, -0.2,(0.0*abs(indicator_diff/100))+1),
# ajuste_perc = ifelse(indicator_diff > 0, (0.05*abs(indicator_diff/100))+1.25,-0.2))
mutate(ajuste_text = ifelse(indicator_diff >0, -0.2,1.2),
ajuste_perc = ifelse(indicator_diff > 0, 1.2,-0.2))
cuartile <- quantile(diff$indicator_last_week, prob=seq(0, 1, length = 11))
diff <- diff %>%
filter (indicator_last_week >= cuartile[since] &
indicator_last_week <= cuartile[to])
return (diff)
}
tendencia <- function (df,text_indicator,max_size,skip,left_margin,su_color){
grafica <- df %>%
ggplot() +
geom_segment(aes(y=indicator_pre_last_week,
yend=indicator_last_week,
x= municipio_distrito,
xend=municipio_distrito,
color=ajuste_color),
arrow = arrow(length=unit(0.10,"cm"), ends="last", type = "closed"))+
geom_line (aes(y=indicator_last_week,
x= as.numeric(reorder(municipio_distrito,indicator_last_week))),
size=4, alpha=0.5, color = "gray") +
labs(y = "Variación", x = "Municipios-Distritos",
caption = "By @congosto\nFuente: Comunidad de Madrid")+
scale_colour_manual('', values = su_color) +
scale_x_discrete ( expand = c(0.05, 0.05)) +
scale_y_continuous(name=text_indicator,position = "right", limit = c(left_margin,max_size),
breaks=seq(0, max_size, by = skip), sec.axis = dup_axis(),
expand = c(0.0, 0.0)) +
theme_a() +
theme(axis.text.x=element_blank(),
axis.ticks.x=element_blank(),
panel.grid.major.x = element_blank(),
panel.grid.minor.y = element_blank(),
panel.grid.major.y = element_line(colour = "gray"),
#plot.margin = unit(c(1,1,1,1), "cm"),
legend.position="top",legend.text = element_text(size=11))
return (grafica)
}
dumbbell_A <- function (df,text_indicator,max_size,skip,left_margin,su_color, anotacion){
grafica <- df %>%
ggplot() +
geom_segment(aes(x=indicator_pre_last_week,
xend=indicator_last_week,
y= municipio_distrito,
yend=municipio_distrito,
color=ajuste_color),
arrow = arrow(length=unit(0.10,"cm"), ends="last", type = "closed"))+
geom_line (aes(x=indicator_last_week,
y= as.numeric(reorder(municipio_distrito,indicator_last_week))),
size=4, alpha=0.5, color = "gray") +
labs(x = "Variación", y = "Municipios-distritos",
caption = "By @congosto\nFuente: Comunidad de Madrid")+
scale_colour_manual('', values = su_color) +
scale_y_discrete ( expand = c(0.05, 0.05)) +
scale_x_continuous(name=text_indicator,position = "top", limit = c(left_margin,max_size),
breaks=seq(0, max_size, by = skip), sec.axis = dup_axis(),
expand = c(0.0, 0.0)) +
theme_a() +
theme(axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
panel.grid.major.y = element_blank(),
panel.grid.major.x = element_line(colour = "gray"),
plot.margin = unit(c(1,1,1,1), "cm"),
legend.position="top",legend.text = element_text(size=11))
if (anotacion) {
grafica <- grafica +
geom_text(aes(x=indicator_last_week,
y= municipio_distrito, color=ajuste_color, label = municipio_distrito,
hjust= ajuste_text),
size=4, vjust=0, show.legend = FALSE ) +
geom_text(aes(x=indicator_pre_last_week,
y= municipio_distrito, color=ajuste_color,
label = round(indicator_diff,1),
hjust= ajuste_perc),
size=4, vjust=0, show.legend = FALSE )
}
return (grafica)
}
df <- select_last_weeks (serie_madrid,"tasa_incidencia_acumulada_P60mas_ultimos_14dias","0%","100%") %>%
mutate(ajuste_color = ifelse(indicator_diff >0, "Incremento", "Descenso")) %>%
arrange (indicator_last_week)
df$municipio_distrito <- factor(df$municipio_distrito, levels=df$municipio_distrito)
variacion <- df$indicator_diff
pos <- sum(variacion > 0)
neg <- sum(variacion < 0)
cero <- sum(variacion ==0)
vacio <- sum(is.na (variacion))
mi_color <- c('Descenso'='steelblue4', 'Incremento'='red4')
grafica <- tendencia (df,"IA14",10000,5000,0,mi_color)
grafica <- grafica +
labs(
title = paste("Municipios de la Comunidad de Madrid, diferencia de la IA14 entre las semanas",
last_week_text-1,"y",last_week_text) ,
subtitle="Normalizado a 100.000 habitantes.Los valores semanales se calculan como media\nEn rojo los Municipios que aumentan el IA14, en azul las que disminuyen.")
plot(grafica)
name_file <- paste0("images/segunda_ola_tasa_incidencia_acumulada_P60mas_ultimos_14dias_tendencia.png")
ggsave(name_file,grafica, width = 300, height = 160,unit="mm")
df <- serie_madrid %>%
filter (week > last_week -4) %>%
filter (tasa_incidencia_acumulada_P60mas_ultimos_14dias >0)
ggplot(data = df, aes( x=fecha_informe, y=tasa_incidencia_acumulada_P60mas_ultimos_14dias, group = week)) +
geom_boxplot(color="cornflowerblue",alpha = 0.5) +
geom_jitter(color="cornflowerblue",size = 2, alpha = 0.25, width = 2) +
stat_summary(geom="text", fun=quantile,
aes(label=sprintf("%1.1f", ..y..)),
position=position_nudge(x=3.50), size=3.5) +
labs( title = "Distribución de la IA14 en los Municipios-Distritos",
subtitle=paste("Normalizado a 100.000 habitantes. Los valores semanales se calculan como media.\nCada punto es el valor de un Municipios-Distritos. Los puntos mƔs oscuros son valores superpuestos"),
y="IA14",
caption = "By @congosto\nFuente: Comunidad de Madrid")+
#guides(color = FALSE)+
theme_a()+
theme(axis.title.x=element_blank(),
#axis.text.y=element_blank(),
#axis.ticks.y=element_blank(),
panel.grid.major.y = element_blank(),
#panel.grid.major.x = element_line(colour = "gray"),
legend.position="top",legend.text = element_text(size=11))
### Distribución IA14 Municipios-Distritos último mes en Madrid
Capital
df <- serie_madrid %>%
filter (week > last_week -4) %>%
filter (Capital == "SĆ")%>%
filter (tasa_incidencia_acumulada_P60mas_ultimos_14dias > 0)
df_municipio_distrito <- serie_madrid %>%
filter (week == max (serie_madrid$week)) %>%
filter (Capital == "SĆ")%>%
group_by(week,municipio_distrito)%>%
summarise ( indicator_week_distrito = mean (tasa_incidencia_acumulada_P60mas_ultimos_14dias),
.groups = 'drop') %>%
distinct (week,municipio_distrito,indicator_week_distrito) %>%
arrange (desc(indicator_week_distrito))
municipio_distrito_order <- unique(df_municipio_distrito$municipio_distrito)
df$municipio_distrito <- factor (df$municipio_distrito,levels = municipio_distrito_order)
ggplot(data = df, aes( x=fecha_informe, y=tasa_incidencia_acumulada_P60mas_ultimos_14dias, group = week)) +
geom_boxplot(color="cornflowerblue",alpha = 0.5) +
#geom_jitter(color="cornflowerblue",size = 4, alpha = 0.25, width = 2) +
geom_jitter(aes(color=municipio_distrito),size = 4, alpha = 0.6, width = 2) +
stat_summary(geom="text", fun=quantile,
aes(label=sprintf("%1.1f", ..y..)),
position=position_nudge(x=3.50), size=3.5) +
labs( title = "Distribución de la IA14 en mayores de 60 años en los Distritos de Madrid capital",
subtitle=paste("Normalizado a 100.000 habitantes. Los valores semanales se calculan como media.\nCada punto es el valor de un Municipios-Distritos. Los puntos mƔs oscuros son valores superpuestos"),
y="IA14",
color ="Distrito",
caption = "By @congosto\nFuente: Comunidad de Madrid")+
guides(color=guide_legend(ncol=1))+
theme_a()+
theme(axis.title.x=element_blank(),
#axis.text.y=element_blank(),
#axis.ticks.y=element_blank(),
panel.grid.major.y = element_blank(),
#panel.grid.major.x = element_line(colour = "gray"),
legend.position="right",legend.text = element_text(size=11))
df <- select_last_weeks (serie_madrid,"tasa_incidencia_acumulada_P60mas_ultimos_14dias","80%","100%") %>%
mutate(ajuste_color = ifelse(indicator_diff >0, "Incremento", "Descenso")) %>%
arrange (indicator_last_week)
df$municipio_distrito <- factor(df$municipio_distrito, levels=df$municipio_distrito)
mi_color <- c('Descenso'='steelblue4', 'Incremento'='red4')
grafica <- dumbbell_A (df,"IA14",20000,5000,-8000,mi_color,TRUE)
grafica <- grafica +
labs(
title = paste("Municipios con mayor incidencia en mayores de 60 aƱos en la en la Comunidad de Madrid\ndiferencia de la IA14 entre las semanas",
last_week_text-1,"y",last_week_text) ,
subtitle="Normalizado a 100.000 habitantes. En rojo los Municipios-Distritos que aumentan el IA14, en azul los que disminuyen")
plot(grafica)
name_file <- paste0("images/segunda_ola_tasa_incidencia_acumulada_P60mas_ultimos_14dias_comunidad_mayor.png")
ggsave(name_file,grafica, width = 230, height = 325,unit="mm")
df <- select_last_weeks (serie_madrid,"tasa_incidencia_acumulada_P60mas_ultimos_14dias","0%","20%") %>%
mutate(ajuste_color = ifelse(indicator_diff >0, "Incremento", "Descenso")) %>%
arrange (indicator_last_week)
df$municipio_distrito <- factor(df$municipio_distrito, levels=df$municipio_distrito)
mi_color <- c('Descenso'='steelblue4', 'Incremento'='red4')
grafica <- dumbbell_A (df,"IA14",5000,1000,-2000,mi_color,TRUE)
grafica <- grafica +
labs(
title = paste("Municipios-Distritos con menor incidencia en la Comunidad de Madrid, diferencia de la IA14 entre las semanas",
last_week_text-1,"y",last_week_text) ,
subtitle="Normalizado a 100.000 habitantes.Los valores semanales se calculan como media\nEn rojo las Municipios-Distritos que aumentan el IA14, en azul las que disminuyen. El dato númerico es la variación en esa semana")
plot(grafica)
name_file <- paste0("images/segunda_ola_tasa_incidencia_acumulada_P60mas_ultimos_14dias_comunidad_menor.png")
ggsave(name_file,grafica, width = 230, height = 300,unit="mm")
serie_madrid_cap <- serie_madrid %>%
filter (Capital == "SĆ")
df <- select_last_weeks (serie_madrid_cap,"tasa_incidencia_acumulada_P60mas_ultimos_14dias","0%","100%") %>%
mutate(ajuste_color = ifelse(indicator_diff >0, "Incremento", "Descenso")) %>%
arrange (indicator_last_week)
df$municipio_distrito <- factor(df$municipio_distrito, levels=df$municipio_distrito)
mi_color <- c('Descenso'='steelblue4', 'Incremento'='red4')
grafica <- dumbbell_A (df,"IA14",3000,500,-500,mi_color,TRUE)
grafica <- grafica +
labs(
title = paste("Distritos de Madrid capital, diferencia de la IA14 en mayores de 60 aƱos entre las semanas",
last_week_text-1,"y",last_week_text) ,
subtitle="Normalizado a 100.000 habitantes. En rojo los Distritos que aumentan el IA14, en azul los que disminuyen")
plot(grafica)
name_file <- paste0("images/segunda_ola_tasa_incidencia_acumulada_P60mas_ultimos_14dias_capital_mayor.png")
ggsave(name_file,grafica, width = 230, height = 325,unit="mm")