Este cuaderno visualiza la evolución de la custodia de los hijos
if(!"tidyverse" %in% installed.packages()) {install.packages("tidyverse")}
if(!"scales" %in% installed.packages()) {install.packages("scales")}
if(!"ggrepel" %in% installed.packages()) {install.packages("ggrepel")}
library("tidyverse")
library("scales")
library("ggtext") # Dar color a los textos de las leyendas
locale(date_names = "es", date_format = "%AD", time_format = "%AT",
decimal_mark = ",", grouping_mark = ".", tz = "Europe/Berlin",
encoding = "UTF-8", asciify = FALSE)
## <locale>
## Numbers: 123.456,78
## Formats: %AD / %AT
## Timezone: Europe/Berlin
## 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.
Sys.setlocale(category = "LC_ALL", locale = "spanish")
## [1] "LC_COLLATE=Spanish_Spain.1252;LC_CTYPE=Spanish_Spain.1252;LC_MONETARY=Spanish_Spain.1252;LC_NUMERIC=C;LC_TIME=Spanish_Spain.1252"
my_theme <- function(
base_size = 11,
base_color = "#5a5856",
base_family = "sans"
)
{
# Establecemos la proporción del tamaño de la letra de cada uno de los elementos
template <-
theme_bw(base_size=base_size, base_family = base_family) +
theme(
panel.border = element_rect(colour = base_color),
panel.grid.major = element_blank(),
panel.grid.minor = element_line(color = "grey"),
plot.title = element_text(
size = base_size+2,
face = "bold",
color = base_color,
vjust = 1.25,
hjust = 0.5),
plot.subtitle = element_text(size=base_size + 2, color = base_color, hjust = 0.5),
plot.caption = element_text(hjust = 1, size=base_size - 1, color = base_color),
legend.position ="top",
legend.margin = margin(0,0,0,0,unit="pt"),
legend.text = element_text(size=base_size + 1),
text = element_text(size=base_size, color = base_color),
axis.title.x = element_text(
size=base_size + 1,
vjust=0,
color = base_color,
margin = unit(c(3, 0, 0, 0), "mm")
),
axis.title.y = element_text(
size=base_size + 1,
vjust=1.25,
color = base_color,
margin = unit(c(0, 3, 0, 0), "mm")
),
axis.title.y.right=element_text(
size=base_size + 1,
color = base_color,
margin = unit(c(0, 0, 0, 3), "mm")
),
axis.text.x = element_text(size=base_size - 1, color = base_color),
axis.text.y = element_text(size=base_size-1,color = base_color),
strip.text = element_text(size=base_size + 2, color = base_color),
strip.text.x = element_text(size=base_size + 1, color = base_color),
strip.text.y = element_text(size=base_size + 1, color = base_color),
strip.background = element_rect(color = NA, fill = NA)
)
return(template)
}
url_custodias <- "https://www.ine.es/jaxiT3/files/t/es/csv_bdsc/20692.csv?nocab=1"
custodias <- read_csv2 (url_custodias) %>%
filter(`Tipo de divorcio` != "Total") %>%
filter(`Cónyuge que debe ejercer la custodia` == "Padre"
| `Cónyuge que debe ejercer la custodia` == "Madre"
| `Cónyuge que debe ejercer la custodia` == "Custodia compartida") %>%
group_by(Periodo, `Tipo de divorcio`) %>%
summarise(
total_tipo_divorcio = sum(Total),
`Cónyuge que debe ejercer la custodia` = `Cónyuge que debe ejercer la custodia`,
Total = Total
) %>%
mutate (porcentaje = round((Total *100) / total_tipo_divorcio,0)) %>%
ungroup()
diferencias <- custodias %>%
filter (Periodo == min(Periodo) | Periodo == max(Periodo)) %>%
select(Periodo, `Tipo de divorcio`, `Cónyuge que debe ejercer la custodia`, porcentaje) %>%
pivot_wider (names_from = Periodo, values_from= "porcentaje") %>%
mutate(diferencia = `2022` - `2013`) %>%
pivot_longer(`2013` | `2022`, names_to = "Periodo", values_to = "porcentaje") %>%
filter(Periodo == max(Periodo)) %>%
mutate(Periodo = as.numeric(Periodo))
color_custodia <- c("Madre" = "#e4abfa", "Padre" = "#05c3e8", "Custodia compartida" = "#0d8603")
ggplot(data = custodias) +
geom_line(
aes(
x = Periodo, y = porcentaje,
color = `Cónyuge que debe ejercer la custodia`
)
) +
geom_point(
aes(
x = Periodo, y = porcentaje,
color = `Cónyuge que debe ejercer la custodia`
),
size = 4,
alpha = 0.5
) +
geom_text (
data = custodias %>%
filter(`Cónyuge que debe ejercer la custodia` == "Custodia compartida"),
aes(x = Periodo, y = porcentaje + 4,
label = paste0(porcentaje,"%")
),
size = 3,
color = "#5a5856"
) +
geom_text (
data = custodias %>% filter( Periodo == min(Periodo) | Periodo == max(Periodo)),
aes(x = Periodo, y = porcentaje + 4,
label = paste0(porcentaje,"%")
),
size = 3,
color = "#5a5856"
) +
geom_label(
data = diferencias %>% filter (diferencia < 0),
aes(x = Periodo + 1.2, y = porcentaje ,
label = paste0(diferencia,"%")
),
size = 2.5,
color = "red4",
fill = "red4",
alpha = 0.3,
vjust = 0.5
) +
geom_label(
data = diferencias %>% filter (diferencia > 0),
aes(x = Periodo + 1.2, y = porcentaje ,
label = paste0(diferencia,"%")
),
size = 2.5,
color = "#5a5856",
fill = "#5a5856",
alpha = 0.3,
vjust = 0.5
) +
scale_x_continuous(
breaks = c(2013, 2022)
) +
scale_y_continuous(
breaks = c(0, 25, 50, 75, 100),
labels = scales::label_percent(scale = 1)
) +
scale_color_manual (values = color_custodia) +
labs(
title =
"Custodia de los hijos para la
<span style='color:#e4abfa'>madre</span>
, el
<span style='color:#05c3e8'>padre</span>
o la
<span style='color:#0d8603'>compartida</span>",
x = "",
y = "",
caption = "by @congosto\nFuente: INE",
color = ""
) +
facet_wrap(~`Tipo de divorcio`) +
my_theme() +
theme(
legend.position = "None",
axis.ticks=element_blank(),
panel.border = element_blank(),
plot.title = element_markdown(size=12)
)