La evolución del aborto en las últimas décadas

16/12/25

Librerías

Código
library(eurostat)
library(tidyverse)
library(sf)
library(magrittr)
library(dplyr)
library(dplyr)
library(tidyr)
library(stringr)
library(ggplot2)
library(eurostat)
library(sf)
library(gt)
library(gtExtras)
library(rio)
library(readr)
library(forcats)
library(giscoR)
library(plotly)
library(magrittr)

Ámbito geográfico del aborto

Evolución de los abortos en el Mundo

El gráfico representa la cantidad total de abortos (número absoluto de procedimientos) por región del mundo entre 1990 y 2017. La escala vertical es logarítmica, lo que permite comparar de manera visual la evolución proporcional de las cifras entre regiones con volúmenes muy distintos, sin que las regiones con números más altos dominen la gráfica.

Código
ruta_global_abort_ind <- "./datasets/Global Abortion Incidence Dataset (1).csv"
global_abortion <- rio::import(ruta_global_abort_ind)

global_abort_mundial <- global_abortion %>% 
  select(yearstart, numberofabortions, region) %>%
  filter(!is.na(numberofabortions)) 


global_abort_mundial <- global_abort_mundial %>%
  mutate(region = case_when(
    region %in% c("Australia and New Zealand", "Oceania (excluding Australia and New Zealand)") ~ "Oceanía",
    region %in% c("Central and Southern Asia", "East and Southeastern Asia") ~ "Asia",
    TRUE ~ region
  ))

abort_region_mundial <- global_abort_mundial %>% 
  group_by(region, yearstart) %>% 
  summarise(numberofabortions = sum(numberofabortions, na.rm = TRUE))




p3 <- ggplot() +
  geom_line(data = abort_region_mundial, aes(yearstart, numberofabortions, group = region, color= region))+
  labs(
    title = "Abortos en el mundo entre 1990 y 2017", 
    x = "Año",
    y= "Abortos") +
  theme_minimal()

p4 <- p3 + scale_y_continuous(breaks = c(0, 100000, 1000000, 10000000), labels = scales::comma)

p4 <- p3 +
  scale_y_log10(
    labels = scales::comma)

1.Asia Es la región con el mayor volumen absoluto de abortos durante todo el período (esto se infiere porque su línea está sistemáticamente por encima del resto en escala logarítmica). Muestra una tendencia a la baja continua desde 1990, especialmente marcada entre 1990 y 2000.Esta reducción puede estar relacionada con políticas de planificación familiar.

2.Europa y América del Norte Presenta un aumento hasta mediados de los 90, seguido de una reducción sostenida hasta estabilizarse a partir de 2010. El pico y posterior descenso pueden reflejar cambios legislativos, mayor acceso a anticoncepción de emergencia o evolución en los comportamientos reproductivos.

Evolución de los abortos en Europa

El gráfico muestra la evolución del número de abortos en distintos países europeos entre 1990 y 2017. En la parte superior del gráfico aparecen, para cada año, los países con mayor número de abortos, mientras que en la parte inferior se representan aquellos con las cifras más bajas. Además, se incluye la evolución de España y de Italia.

Código


global_abort_europa <- global_abortion %>% 
  select(country, yearstart, numberofabortions, region) %>%
  filter(region == "Europe and Northern America") %>% 
  filter(!(country %in% c("Canada", "Ukraine", "United States of America", 
                        "Russian Federation", "Romania"))) %>% 
  filter(!is.na(numberofabortions)) 



p1 <- ggplot() +
  geom_line(data = global_abort_europa %>% group_by(yearstart) %>% slice_max(numberofabortions),
            aes(yearstart, numberofabortions), color = "black") +
  geom_line(data = global_abort_europa %>% group_by(yearstart) %>% slice_min(numberofabortions),
            aes(yearstart, numberofabortions), color = "black") +
  geom_line(data = global_abort_europa%>% filter(country %in% c("Spain", "Italy")),
            aes(x = yearstart, y = numberofabortions, color = country)) +
  labs(
    title = "Abortos en Europa entre 1990 y 2017", 
    x = "Año",
    y= "Abortos") +
  theme_minimal()


p2 <- p1 + 
  geom_label(data = global_abort_europa %>% group_by(yearstart) %>% slice_max(numberofabortions) %>%
      filter(yearstart == max(yearstart)), aes(yearstart, numberofabortions, label = country),
      show.legend = FALSE, size = 3) +
  geom_label(data = global_abort_europa %>% group_by(yearstart) %>% slice_min(numberofabortions) %>%
      filter(yearstart == max(yearstart)), aes(yearstart, numberofabortions, label = country),
      show.legend = FALSE, size = 3)

Evolución del aborto en España

Abortos legalmente inducidos en España entre 1985 y 2010

El gráfico representa la evolución del número de abortos en España entre 1985 y 2010. A lo largo de todo el periodo se observa una tendencia general claramente ascendente, aunque con algunas variaciones según los años.

La Ley Orgánica 9/1985, de 5 de julio, de reforma del artículo 417 bis del Código Penal.”Ley supuestos”. Bajo 3 supuestos: 1.Indicación Terapéutica.

2.Indicación Criminológica (Violación).

3.Indicación Eugenésica (Malformaciones Fetales).

Código
my_table <- "demo_fabort" 
df <- get_eurostat(my_table, time_format = 'raw', keepFlags = TRUE)
#> 
indexed 0B in  0s, 0B/s
indexed 2.15GB in  0s, 2.15GB/s
                                                                              
df_names <- names(df)
df <- label_eurostat(df, code = df_names, fix_duplicated = TRUE)
rm(df_names, my_table)

dist_geo <- df %>%
  distinct(geo)

count_geo <- df %>% 
  count(geo == "Spain")

df <- df %>% 
  mutate(TIME_PERIOD = as.numeric(TIME_PERIOD)) %>% 
  filter(TIME_PERIOD >= 1985)

df_spain_85_10 <- df %>%
  filter(
    geo == "Spain",
    between(TIME_PERIOD, 1985, 2010)
  ) 

aa<- df_spain_85_10 %>% filter(age == "Total")

aa<- df_spain_85_10 %>% filter(age == "Total")

g1 <- ggplot(aa,aes(x=TIME_PERIOD, y=values))+
  geom_line(color="plum",linewidth=1) + 
  geom_point(color="navyblue",size= 3)+
  labs(title = "Evolución del aborto en España  desde 1985 y 2010",
       x="Años",
       y="Abortos"
  )

Abortos después de introducirse la Ley de salud sexual y reporoductiva entre 2010 y 2023

El gráfico muestra la evolución del número de abortos en España entre 2010 y 2023 y refleja una trayectoria marcada por descensos, cambios de tendencia y un repunte final, que puede explicarse a partir del contexto legal, económico y social del periodo.

Ley Orgánica 2/2010 (Ley de Plazos). La Ley de 2010 sustituyó el modelo de supuestos por el modelo de plazos, convirtiendo la Interrupción Voluntaria del Embarazo (IVE) en un derecho y una prestación sanitaria.

El cambio fundamental fue el reconocimiento de la autonomía de la mujer: 1.Plazo Libre.14 semanas de gestación.

2.Plazo Limitado.hasta la semana 22.

3.Sin Límite.sin límite de semanas solo si el feto presenta anomalías incompatibles con la vida o una enfermedad extremadamente grave e incurable.

Código
df_spain_2010 <- df %>%
  filter(geo=="Spain",TIME_PERIOD>=2010)

#grafica
bb <-df_spain_2010 %>% filter(age == "Total") 

g2 <- ggplot(bb,aes(x=TIME_PERIOD, y=values))+
  geom_line(color="plum",linewidth=1) + 
  geom_point(color="navyblue",size= 2)+
  labs(title = "Evolución del aborto en España desde 2010 hasta 2023",
       x="Años",
       y="Abortos"
  )

Tasas de aborto en las Comunidades Autónomas

La tabla proporcionada resume el número de Interrupciones Voluntarias del Embarazo (IVE) registradas anualmente en España desde 1985 (año de la primera Ley de despenalización) hasta 2023. La tabla desglosa, para cada año (TIME_PERIOD):

N.º Abortos Mínimo (min_ev): El número de abortos más bajo registrado ese año (generalmente se refiere a la comunidad autónoma con la tasa o número más bajo).

N.º Abortos Medio (mean_ev): El promedio de abortos registrados.

N.º Abortos Máximo (max_ev): El número de abortos más alto registrado ese año (generalmente se refiere a la comunidad autónoma con la tasa o número más alto).

Código
df_spain_85_23 <- df %>%
  filter(
    geo == "Spain",
    between(TIME_PERIOD, 1985, 2023)
  )

df_summary <- df_spain_85_23 %>%
  group_by(TIME_PERIOD) %>%
  summarise(
    max_ev = max(values, na.rm = TRUE),   
    mean_ev = mean(values, na.rm = TRUE), 
    min_ev = min(values, na.rm = TRUE),   
    .groups = 'drop'
  )

tabla_gt1 <- df_summary %>%
  gt() %>%
  tab_header(
    title = "Resumen de Abortos en España (1985-2023)"
  ) %>%
  cols_label(
    TIME_PERIOD = "Año",
    min_ev = "N.ºAbortos Mínimo",
    mean_ev = "N.ºAbortos Medio",
    max_ev = "N.ºAbortos Máximo"
  ) %>%
  data_color(
    columns = c(max_ev, min_ev),  
    colors = scales::col_numeric(
      palette = c("gray", "plum"),
      domain = NULL
    )
  )

Aborto en las Comunidades Autónomas

Las 5 CCAA con mayores Tasas de Aborto

Esta tabla resume las cinco Comunidades Autónomas (CC.AA.) que registraron la tasa de Interrupción Voluntaria del Embarazo (IVE) más alta en España en el año 2024.

Código
ruta_ccaa <- "./datasets/abortos_pccaa.csv"
datos_aborto_pccaa <- rio::import(ruta_ccaa)

datos_aborto_limpio <- datos_aborto_pccaa %>%
  rename_with(
      .fn = ~str_remove(., "X"), 
      .cols = starts_with("X20") 
    )
datos_aborto_limpio <- import(
  "./datasets/abortos_pccaa.csv", 
  setclass = "tibble",
  header = TRUE
)
datos_long <- datos_aborto_limpio %>%
    pivot_longer(
      cols = c(`2015`:`2024`), 
      names_to = "Year",         
      values_to = "Tasa"         
    )
datos_long$Year <- as.integer(datos_long$Year)
datos_long <- datos_long %>%
    mutate(Year = as.integer(Year))
datos_long <- datos_long %>%
  mutate(Tasa = trimws(Tasa))  
datos_long <- datos_long %>%
  mutate(Tasa = str_replace(Tasa, ",", "."))
datos_long <- datos_long %>%
  mutate(Tasa = as.numeric(Tasa))

top5_mas_abortos <- datos_long %>% 
    filter(Year == 2024) %>%
    slice_max(Tasa, n = 5) %>% 
  arrange(desc(Tasa))
Comunidad Autónoma Year Tasa
Cataluña 2024 14.89
Baleares, Illes 2024 13.87
Madrid, Comunidad de 2024 13.56
Asturias, Principado de 2024 12.89
Andalucía 2024 12.67

Las 5 CC.AA con menores Tasas de Aborto

Esta tabla resume las cinco Comunidades Autónomas (CC.AA.) que registraron la tasa de Interrupción Voluntaria del Embarazo (IVE) más baja en España en el año 2024.

CC.AA con Tasas de crecimiento significativas

La tabla muestra las 10 Comunidades Autónomas donde la tasa de abortos (por 1.000 habitantes) ha experimentado el mayor crecimiento absoluto entre el año 2015 (Tasa Inicial) y el año 2024 (Tasa Final).

  1. El Indicador Clave: Crecimiento Total

El indicador más importante es Crecimiento Total, que se calcula como la diferencia simple entre la Tasa_Final_2024 y la Tasa_Inicial_2015.

Las CC.AA. están ordenadas de mayor a menor según este crecimiento, destacando aquellas donde la tasa ha aumentado más rápidamente en el periodo analizado.

2.Hallanzcos Clave

Identificación de Regiones Dinámicas: La tabla revela qué regiones están experimentando un cambio más significativo en sus tasas de aborto en la última década. Las CC.AA. que aparezcan aquí no son necesariamente las que tienen las tasas más altas en 2024 (como Madrid o Cataluña, que ya tenían tasas altas en 2015), sino aquellas donde la tasa ha crecido más agresivamente.

Posible Convergencia: Un crecimiento significativo en CC.AA. que históricamente tenían tasas bajas (debido a barreras de acceso, como la objeción de conciencia) podría indicar una mejora en el acceso a la prestación sanitaria a nivel local. Es decir, las mujeres están pudiendo acceder al aborto en su propia comunidad, en lugar de tener que viajar.

Comunidad Autónoma Year Tasa
Galicia 2024 8.78
Navarra, Comunidad Foral de 2024 8.70
Extremadura 2024 8.48
Aragón 2024 8.15
Ceuta y Melilla, Ciudades Autónomas 2024 4.65
Comunidad Tasa_Inicial_2015 Tasa_Final_2024 Crecimiento_Total
La Rioja 5.64 9.15 3.51
C. Valenciana 7.85 10.74 2.89
Extremadura 5.89 8.48 2.59
Castilla y León 6.33 8.92 2.59
Castilla - La Mancha 7.38 9.83 2.45
País Vasco 9.57 11.84 2.27
Cataluña 12.70 14.89 2.19
Galicia 6.60 8.78 2.18
Andalucía 10.59 12.67 2.08
Cantabria 8.80 10.52 1.72

Coropleta abortos en España en 2024

Código
mapa_ccaa <- gisco_get_nuts(
  country = "ES",         
  nuts_level = "2",       
  resolution = "3"
)

datos_2024_completo <- datos_long %>% 
  filter(Year == 2024, Comunidad != "Total") %>%
  mutate(
    CCAA_Limpia = case_when(
      Comunidad == "Asturias, Principado de" ~ "Principado de Asturias",
      Comunidad == "Baleares, Illes" ~ "Illes Balears",
      Comunidad == "C. Valenciana" ~ "Comunidad Valenciana",
      Comunidad == "Madrid, Comunidad de" ~ "Comunidad de Madrid",
      Comunidad == "Murcia, Región de" ~ "Región de Murcia",
      Comunidad == "Navarra, Comunidad Foral de" ~ "Comunidad Foral de Navarra",
      Comunidad == "Castilla - La Mancha" ~ "Castilla-La Mancha", 
      Comunidad == "Ceuta y Melilla, Ciudades Autónomas" ~ "Ciudad Autónoma de Ceuta",
      TRUE ~ Comunidad
    ),
    Tasa = trimws(Tasa),
    Tasa = str_replace(Tasa, ",", "."),
    Tasa = as.numeric(Tasa))

datos_2024_completo <- bind_rows(
  datos_2024_completo,
  datos_2024_completo %>%
    filter(CCAA_Limpia == "Ciudad Autónoma de Ceuta") %>%
    mutate(CCAA_Limpia = "Ciudad Autónoma de Melilla"))

datos_2024_completo <- datos_2024_completo %>%
  mutate(Categoria = cut(
    Tasa,
    breaks = c(-Inf, 9.0, 13.0, Inf),
    labels = c("Baja (Gris)", "Media (Violeta Claro)", "Alta (Violeta)"),
    right = FALSE))

mapa_final <- mapa_ccaa %>% 
  mutate(
    CCAA_Limpia = case_when(
      NAME_LATN %in% c("Ceuta", "Melilla") ~ "Ceuta y Melilla",
      TRUE ~ NAME_LATN
    )
  ) %>%
  left_join(datos_2024_completo, by = "CCAA_Limpia")

paleta_colores <- c(
  "Baja (Gris)" = "lightgrey", 
  "Media (Violeta Claro)" = "#E6E6FA", 
  "Alta (Violeta)" = "plum"
)


mapa_coropleta <- ggplot(mapa_final) +
  geom_sf(
    aes(fill = Categoria),
    color = "grey60", 
    linewidth = 0.2
  ) +
  scale_fill_manual(
    values = paleta_colores,
    name = "Tasa de Abortos (por 1.000) - 2024"
  ) +
  geom_sf_text(
    aes(label = CCAA_Limpia),
    size = 2,
    fontface = "bold",
    check_overlap = TRUE
  ) +
  labs(
    title = "Tasa de Abortos por CCAA (2024)",
    caption = "Clasificación: Baja < 9.0, Media < 13.0, Alta ≥ 13.0",
    fill = "Categoría de Tasa"
  ) +
  theme_minimal() +
  theme(
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    legend.position = "left",
    legend.title = element_text(face = "bold.italic"),  
    legend.text = element_text(size = 12),
    plot.title = element_text(hjust = 0.5, face = "bold.italic", size = 16))

CCAA con la Mayor y Menor Tasa de Abortos por Bloques de Años: Pre-COVID, COVID y Post-COVID

La tabla desglosa el análisis en tres bloques temporales: Pre-COVID (hasta 2019), COVID (2020-2021), y Post-COVID (a partir de 2022), identificando la Comunidad Autónoma (CCAA) con la tasa de Interrupción Voluntaria del Embarazo (IVE) más alta y más baja en cada periodo, junto con el valor exacto de esa tasa (expresada por 1.000 habitantes).

Código
datos_long <- datos_long %>%
  mutate(
    Bloque = case_when(
      Year <= 2019 ~ "Pre-COVID",
      Year %in% 2020:2021 ~ "COVID",
      Year >= 2022 ~ "Post-COVID"))

comparacion <- datos_long %>%
  group_by(Bloque) %>%
  summarise(
    Mayor_Tasa_CCAA = Comunidad[which.max(Tasa)],
    Mayor_Tasa = max(Tasa),
    Menor_Tasa_CCAA = Comunidad[which.min(Tasa)],
    Menor_Tasa = min(Tasa)
  ) %>%
  ungroup()

tabla_gt2 <- comparacion %>%
  gt() %>%
  tab_header(
    title = "CCAA con la Mayor y Menor Tasa de Abortos por Bloques de Años: Pre-COVID, COVID y Post-COVID" ) %>%
  cols_label(
    Bloque = "",
    Mayor_Tasa_CCAA = "CCAA Mayor Tasa",
    Mayor_Tasa = "Mayor Tasa",
    Menor_Tasa_CCAA = "CCAA Menor Tasa",
    Menor_Tasa = "Menor Tasa") %>%
  tab_source_note(
    source_note = "Las tasas están expresadas por 1.000 habitantes de cada CCAA.")  %>%
  tab_style(
  style = cell_text(size = px(10)),
  locations = cells_source_notes()
)
CCAA con la Mayor y Menor Tasa de Abortos por Bloques de Años: Pre-COVID, COVID y Post-COVID
CCAA Mayor Tasa Mayor Tasa CCAA Menor Tasa Menor Tasa
COVID Cataluña 13.44 Ceuta y Melilla, Ciudades Autónomas 1.79
Post-COVID Cataluña 14.92 Ceuta y Melilla, Ciudades Autónomas 3.82
Pre-COVID Cataluña 14.72 Ceuta y Melilla, Ciudades Autónomas 2.26
Las tasas están expresadas por 1.000 habitantes de cada CCAA.

Leyes que regulan el aborto en el mundo

condiciones por aborto y despues de aborto

En este gráfico vemos las principlaes bases legales por las cuales el aborto està permitido, y nos muestra que la mayoría de los países autorizan el aborto cuando existe riesgo para la vida de la mujer, lo que refleja un amplio consenso internacional sobre esta condición. La autorización disminuye en los casos relacionados con la salud física y es aún más limitada cuando se trata de malformaciones fetales o de embarazos derivados de violación o incesto. Este patrón evidencia importantes diferencias legales y culturales entre los países y muestra que, fuera de las situaciones de riesgo vital, el acceso al aborto sigue siendo restrictivo en muchas partes del mundo.

Código
united_nations_ruta <-"./datasets/united_nations.csv"
df_unitednat <- rio::import(united_nations_ruta)

df_unitednat <- df_unitednat %>%
  select(V2, V3, V4, V5, V6, V7, V8, V9, V10, V11, V12, V13)

colnames(df_unitednat) <- c(
  "country",
  "country code",
  "life_risk",
  "physical_health",
  "rape_incest",
  "fetal_impairment",
  "medical_authorization",
  "judicial_consent_minors",
  "husband_consent",
  "criminal_charge",
  "post_abortion_law",
  "contradictory_legal_systems"
)

df_basi_legali_noNA <- df_unitednat %>%
  select(country, life_risk, physical_health, rape_incest, fetal_impairment) %>%
  mutate(
    across(
      c(life_risk, physical_health, rape_incest, fetal_impairment),
      ~ case_when(
        . == "Yes" ~ 1,
        . == "No"  ~ 0,
        TRUE ~ NA_real_))) %>%
  drop_na(life_risk, physical_health, rape_incest, fetal_impairment)

aa <- df_basi_legali_noNA %>%
  summarise(
    across(
      c(life_risk, physical_health, rape_incest, fetal_impairment),
      ~ sum(., na.rm = TRUE))
    )

paises_si <- df_basi_legali_noNA %>%
  filter(
    life_risk == 1,
    physical_health == 1,
    rape_incest == 1,
    fetal_impairment == 1
  )



baseleg_long <- df_unitednat %>%
  select(country, life_risk, physical_health, rape_incest, fetal_impairment) %>%
  pivot_longer(
    cols      =  -country,
    names_to  = "si_por_variable",
    values_to = "value") %>%
  filter(value ==  "Yes") %>%       
  count(si_por_variable, name = "n_yes")




p2 <- ggplot(baseleg_long, aes(x = si_por_variable, y = n_yes)) +
  geom_col(fill = "#2A9D8F") +  
  coord_flip() +
  labs(
    title = "Países que autorizan el aborto en todas las bases legales",
    x = "Variable",
    y = "Número de países"
  ) +
  theme_minimal()

Países donde el aborto está penalizado

¿En cuántos países está penalizado el aborto? ¿Cuántos países cuentan con leyes sobre atención postaborto? ¿Y cómo se relaciona esta información con las bases legales?