Codigos de inicio

Importar y transformar datos

# Leer y normalizar nombres
RDominicana <- read_excel("C:/Users/william/Desktop/Demografía/RDominicana.xlsx", 
    sheet = "Dominicana")

data <- RDominicana %>% rename_with(~ str_trim(.) %>% str_to_lower())

# Pivotar a formato largo y calcular totales y porcentajes
poblacion <- data %>%
  pivot_longer(cols = c(hombre, mujer),
               names_to = "sexo", values_to = "poblacion") %>%
  mutate(
    edad = as.integer(edad),
    year = as.integer(año),
    sexo = if_else(sexo == "hombre", "Hombres", "Mujeres")
  ) %>%
  group_by(year) %>%
  mutate(
    total = sum(poblacion),
    porcentaje_total = 100 * poblacion / total
  ) %>%
  ungroup() %>%
  # Crear grupos quinquenales en orden
  mutate(
    edad_quinquenal = cut(
      edad,
      breaks = seq(0, 100, by = 5),
      right = FALSE,
      labels = paste(seq(0, 95, by = 5), seq(4, 99, by = 5), sep = "-")
    ),
    edad_quinquenal = factor(edad_quinquenal, levels = paste(seq(0,95,5), seq(4,99,5), sep = "-"))
  )

Crear objeto para pirámide (con signo negativo en Hombres)

# Aplica tu código original para invertir valores de Hombres
poblacion_piramide <- poblacion %>%
  mutate(
    porcentaje_total = if_else(sexo == "Hombres", -porcentaje_total, porcentaje_total),
    poblacion = if_else(sexo == "Hombres", -poblacion, poblacion)
  )

3. Pirámide para República Dominicana 1950 con geom_col

poblacion_piramide %>%
  filter(year == 1950) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 1950",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 1960) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 1960",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 1970) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 1970",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 1980) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 1980",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 1990) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 1990",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 2000) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 2000",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 2010) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 2010",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_piramide %>%
  filter(year == 2020) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide poblacional República Dominicana 2020",
      subtitle = "Edad en grupos quinquenales"
    )

##Transición demográfica por décadas opcional

poblacion_piramide %>%
  filter(str_detect(year, "0$")) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(alpha = 3) +
    facet_wrap(~paste("Año", year), ncol = 10) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(
      legend.position = "bottom",
      strip.text = element_text(size = 9, face = "bold")
    ) +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Transición demográfica República Dominicana",
      subtitle = "Estimaciones y proyecciones de población"
    )

Pirámide suave con geom_area

poblacion_piramide %>%
  filter(year == 2000, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad, año 2000',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )

poblacion_piramide %>%
  filter(year == 2010, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad, año 2010',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )

poblacion_piramide %>%
  filter(year == 2020, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad, año 2020',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )

Animación de la transición demográfica

p <- poblacion_piramide %>%
  filter(edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    transition_time(year) +
    labs(
      title = 'Distribución población RD, año: {as.integer(frame_time)}',
      x = "Edad",
      y = 'Porcentaje de la población total',
      caption = "Créditos: William Gutierrez, datos de ONU"
    )

animate(p, nframes = 60, fps = 5, renderer = gifski_renderer("piramide_rd_2.gif"))

Codigos de Italia

# Leer y normalizar nombres

Italia <- read_excel("C:/Users/william/Desktop/Demografía/Italia.xlsx", sheet = "Italia")
data2 <- Italia %>% rename_with(~ str_trim(.) %>% str_to_lower())

# Pivotar a formato largo y calcular totales y porcentajes

poblacion_i <- data2 %>% 
  
  pivot_longer(cols = c(hombre, mujer), names_to = "sexo", values_to = "poblacion_i") %>% mutate( edad = as.integer(edad), year = as.integer(año), sexo = if_else(sexo == "hombre", "Hombres", "Mujeres") ) %>%
  group_by(year) %>% mutate( total = sum(poblacion_i), porcentaje_total = 100 * poblacion_i / total ) %>% 
  ungroup() %>%
  
# Crear grupos quinquenales en orden 
  mutate( edad_quinquenal = cut( edad, breaks = seq(0, 100, by = 5), right = FALSE, labels = paste(seq(0, 95, by = 5), seq(4, 99, by = 5), sep = "-") ), edad_quinquenal = factor(edad_quinquenal, levels = paste(seq(0,95,5), seq(4,99,5), sep = "-")) )

head(poblacion_i)
## # A tibble: 6 × 8
##    edad   año sexo    poblacion_i  year total porcentaje_total edad_quinquenal
##   <int> <dbl> <chr>         <dbl> <int> <dbl>            <dbl> <fct>          
## 1     0  1950 Hombres       -447.  1950 1308.            -34.2 0-4            
## 2     0  1950 Mujeres        425.  1950 1308.             32.5 0-4            
## 3     1  1950 Hombres       -454.  1950 1308.            -34.7 0-4            
## 4     1  1950 Mujeres        434.  1950 1308.             33.2 0-4            
## 5     2  1950 Hombres       -464.  1950 1308.            -35.5 0-4            
## 6     2  1950 Mujeres        442.  1950 1308.             33.8 0-4

Pirámide para 1950 Italia con geom_col

poblacion_i %>%
  filter(year == 1950) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 4) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 1950",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 1960) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 1960",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 1970) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 1970",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 1980) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 1980",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 1990) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 1990",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 2000) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 2000",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 2010) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de Italia 2010",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_i %>%
  filter(year == 2020) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 3) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide de población de italia 2020",
      subtitle = "Edad en grupos quinquenales"
    )

Transición demográfica Italia décadas opcional

poblacion_i %>%
  filter(str_detect(year, "0$")) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(alpha = 3) +
    facet_wrap(~paste("Año", year), ncol = 10) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(
      legend.position = "bottom",
      strip.text = element_text(size = 9, face = "bold")
    ) +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Transición demográfica en Italia",
      subtitle = "Estimaciones y proyecciones de población"
    )

4.2 Pirámide suave con geom_area

i <- poblacion_i %>%
  filter(year == 2000, edad < 105) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Italia 2000',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(i)

i <- poblacion_i %>%
  filter(year == 2010, edad < 105) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Italia 2010',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(i)

i <- poblacion_i %>%
  filter(year == 2020, edad < 105) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Italia 2020',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(i)

5.2 Animación de la transición demográfica

p2 <- poblacion_i %>%
  filter(edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    transition_time(year) +
    labs(
      title = 'Distribución población Italia por edad, año: {as.integer(frame_time)}',
      x = "Edad",
      y = 'Porcentaje de la población total Italia',
      caption = "Créditos: William Gutierrez, datos de ONU"
    )

animate(p2, nframes = 60, fps = 5, renderer = gifski_renderer("piramide_animada_italia.gif"))

Codigos de Azerbaiyán

# Leer y normalizar nombres
Arzebayan <- read_excel("C:/Users/william/Desktop/Demografía/Arzebayan.xlsx", 
    sheet = "Arzebayan")

data3 <- Arzebayan %>% rename_with(~ str_trim(.) %>% str_to_lower())
head(data3)
## # A tibble: 6 × 4
##    edad hombre mujer   año
##   <dbl>  <dbl> <dbl> <dbl>
## 1     0  -52.1  49.9  1950
## 2     1  -44.7  43.1  1950
## 3     2  -38.6  37.1  1950
## 4     3  -30.6  29.2  1950
## 5     4  -23.2  22.0  1950
## 6     5  -19.4  18.4  1950
# Pivotar a formato largo y calcular totales y porcentajes

poblacion_arz <- data3 %>%
  pivot_longer(cols = c(hombre, mujer),
               names_to = "sexo", values_to = "poblacion_arz") %>%
  mutate(
    edad = as.integer(edad),
    year = as.integer(año),
    sexo = if_else(sexo == "hombre", "Hombres", "Mujeres")
  ) %>%
  group_by(year) %>%
  mutate(
    total = sum(poblacion_arz),
    porcentaje_total = 100 * poblacion_arz / total
  ) %>%
  ungroup() %>%
  
# Crear grupos quinquenales en orden
  mutate(
    edad_quinquenal = cut(
      edad,
      breaks = seq(0, 100, by = 5),
      right = FALSE,
      labels = paste(seq(0, 95, by = 5), seq(4, 99, by = 5), sep = "-")
    ),
    edad_quinquenal = factor(edad_quinquenal, levels = paste(seq(0,95,5), seq(4,99,5), sep = "-"))
  )

Pirámide para 1950 Azerbaiyán con geom_col

poblacion_arz %>%
  filter(year == 1950) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Azerbaiyán 1950",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 1960) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Azerbaiyán 1960",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 1970) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Azerbaiyán 1970",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 1980) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Azerbaiyán 1980",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 1990) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Arzebayan 1990",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 2000) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Azerbaiyán 2000",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 2010) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Azerbaiyán 2010",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_arz %>%
  filter(year == 2020) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Azerbaiyán 2020",
      subtitle = "Edad en grupos quinquenales"
    )

Transición demográfica Italia décadas opcional

poblacion_arz %>%
  filter(str_detect(year, "0$")) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(alpha = 5) +
    facet_wrap(~paste("Año", year), ncol = 10) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(
      legend.position = "bottom",
      strip.text = element_text(size = 7, face = "bold")
    ) +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Transición demográfica en Azerbaiyán",
      subtitle = "Estimaciones y proyecciones de población"
    )

##Pirámide suave con geom_area

arz <- poblacion_arz %>%
  filter(year == 2000, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Azerbaiyán 2000',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(arz)

arz <- poblacion_arz %>%
  filter(year == 2010, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Azerbaiyán 2010',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(arz)

arz <- poblacion_arz %>%
  filter(year == 2020, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Azerbaiyán 2020',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(arz)

##Calculamos las transición demografica

p3 <- poblacion_arz %>%
  filter(edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    transition_time(year) +
    labs(
      title = 'Distribución de la población por edad, año: {as.integer(frame_time)}',
      x = "Edad",
      y = 'Porcentaje de la población total Azerbaiyán 1950-2020',
      caption = "Créditos: William Gutierrez, datos de ONU"
    )

animate(p3, nframes = 60, fps = 5, renderer = gifski_renderer("piramide_animada_Azerbaiyán.gif"))

Codigos de Austria

# Leer y normalizar nombres
Austria <- read_excel("C:/Users/william/Desktop/Demografía/Austria.xlsx", 
    sheet = "Austria")

data4 <- Austria %>% rename_with(~ str_trim(.) %>% str_to_lower())
head(data4)
## # A tibble: 6 × 6
##    edad hombre mujer   año ...5   ...6
##   <dbl>  <dbl> <dbl> <dbl> <lgl> <dbl>
## 1     0  -53.3  51.0  1950 NA       NA
## 2     1  -54.5  52.3  1950 NA       NA
## 3     2  -55.6  53.0  1950 NA       NA
## 4     3  -52.5  49.9  1950 NA       NA
## 5     4  -48.0  46.1  1950 NA       NA
## 6     5  -48.8  47.4  1950 NA       NA
# Pivotar a formato largo y calcular totales y porcentajes
poblacion_aus <- data4 %>%
  pivot_longer(cols = c(hombre, mujer),
               names_to = "sexo", values_to = "poblacion_aus") %>%
  mutate(
    edad = as.integer(edad),
    year = as.integer(año),
    sexo = if_else(sexo == "hombre", "Hombres", "Mujeres")
  ) %>%
  group_by(year) %>%
  mutate(
    total = sum(poblacion_aus),
    porcentaje_total = 100 * poblacion_aus / total
  ) %>%
  ungroup() %>%
  
# Crear grupos quinquenales en orden
  mutate(
    edad_quinquenal = cut(
      edad,
      breaks = seq(0, 100, by = 5),
      right = FALSE,
      labels = paste(seq(0, 95, by = 5), seq(4, 99, by = 5), sep = "-")
    ),
    edad_quinquenal = factor(edad_quinquenal, levels = paste(seq(0,95,5), seq(4,99,5), sep = "-"))
  )
head(poblacion_aus)
## # A tibble: 6 × 10
##    edad   año ...5   ...6 sexo    poblacion_aus  year total porcentaje_total
##   <int> <dbl> <lgl> <dbl> <chr>           <dbl> <int> <dbl>            <dbl>
## 1     0  1950 NA       NA Hombres         -53.3  1950  497.            -10.7
## 2     0  1950 NA       NA Mujeres          51.0  1950  497.             10.3
## 3     1  1950 NA       NA Hombres         -54.5  1950  497.            -11.0
## 4     1  1950 NA       NA Mujeres          52.3  1950  497.             10.5
## 5     2  1950 NA       NA Hombres         -55.6  1950  497.            -11.2
## 6     2  1950 NA       NA Mujeres          53.0  1950  497.             10.7
## # ℹ 1 more variable: edad_quinquenal <fct>

Pirámide para 1950 Austria con geom_col

poblacion_aus %>%
  filter(year == 1950) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Austria 1950",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 1960) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Austria 1960",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 1970) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Austria 1970",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 1980) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Austria 1980",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 1990) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Austria 1990",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 2000) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Austria 2000",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 2010) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Austria 2010",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_aus %>%
  filter(year == 2020) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Austria 2020",
      subtitle = "Edad en grupos quinquenales"
    )

Transición demográfica Austria décadas opcional

poblacion_aus %>%
  filter(str_detect(year, "0$")) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(alpha = 5) +
    facet_wrap(~paste("Año", year), ncol = 10) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(
      legend.position = "bottom",
      strip.text = element_text(size = 7, face = "bold")
    ) +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Transición demográfica en Austria",
      subtitle = "Estimaciones y proyecciones de población"
    )

##Pirámide suave con geom_area

aus <- poblacion_aus %>%
  filter(year == 2000, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Austria 2000',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(aus)

aus <- poblacion_aus %>%
  filter(year == 2010, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Austria 2010',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(aus)

aus <- poblacion_aus %>%
  filter(year == 2020, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de la población por edad Austria 2020',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(aus)

##Calculamos las transición demografica

p4 <- poblacion_aus %>%
  filter(edad < 105) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    transition_time(year) +
    labs(
      title = 'Distribución de la población por edad, año: {as.integer(frame_time)}',
      x = "Edad",
      y = 'Porcentaje de la población total Austria 1950-2020',
      caption = "Créditos: William Gutierrez, datos de ONU"
    )

animate(p4, nframes = 60, fps = 5, renderer = gifski_renderer("piramide_animada_Austria.gif"))

Codigos de Jamaica

# Leer y normalizar nombres
jamaica <- read_excel("C:/Users/william/Desktop/Demografía/jamaica.xlsx", 
    sheet = "jamaica")

data5 <- jamaica %>% rename_with(~ str_trim(.) %>% str_to_lower())
head(data5)
## # A tibble: 6 × 4
##    edad hombre mujer   año
##   <dbl>  <dbl> <dbl> <dbl>
## 1     0  -20.7  20.4  1950
## 2     1  -19.0  18.9  1950
## 3     2  -18.8  18.7  1950
## 4     3  -18.4  18.3  1950
## 5     4  -17.9  17.9  1950
## 6     5  -17.5  17.5  1950
# Pivotar a formato largo y calcular totales y porcentajes
poblacion_jm <- data5 %>%
  pivot_longer(cols = c(hombre, mujer),
               names_to = "sexo", values_to = "poblacion_jm") %>%
  mutate(
    edad = as.integer(edad),
    year = as.integer(año),
    sexo = if_else(sexo == "hombre", "Hombres", "Mujeres")
  ) %>%
  group_by(year) %>%
  mutate(
    total = sum(poblacion_jm),
    porcentaje_total = 100 * poblacion_jm / total
  ) %>%
  ungroup() %>%
  
# Crear grupos quinquenales en orden
  mutate(
    edad_quinquenal = cut(
      edad,
      breaks = seq(0, 100, by = 5),
      right = FALSE,
      labels = paste(seq(0, 95, by = 5), seq(4, 99, by = 5), sep = "-")
    ),
    edad_quinquenal = factor(edad_quinquenal, levels = paste(seq(0,95,5), seq(4,99,5), sep = "-"))
  )
head(poblacion_jm)
## # A tibble: 6 × 8
##    edad   año sexo    poblacion_jm  year total porcentaje_total edad_quinquenal
##   <int> <dbl> <chr>          <dbl> <int> <dbl>            <dbl> <fct>          
## 1     0  1950 Hombres        -20.7  1950  39.2            -52.7 0-4            
## 2     0  1950 Mujeres         20.4  1950  39.2             52.0 0-4            
## 3     1  1950 Hombres        -19.0  1950  39.2            -48.5 0-4            
## 4     1  1950 Mujeres         18.9  1950  39.2             48.3 0-4            
## 5     2  1950 Hombres        -18.8  1950  39.2            -47.9 0-4            
## 6     2  1950 Mujeres         18.7  1950  39.2             47.8 0-4

Pirámide para 1950 Jamaica con geom_col

poblacion_jm %>%
  filter(year == 1950) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Jamaica 1950",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 1960) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Jamaica 1960",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 1970) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Jamaica 1970",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 1980) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Jamaica 1980",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 1990) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title ="Pirámide población Jamaica 1990",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 2000) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Jamaica 2000",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 2010) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Jamaica 2010",
      subtitle = "Edad en grupos quinquenales"
    )

poblacion_jm %>%
  filter(year == 2020) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(position = "stack", alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Pirámide población Jaimca 2020",
      subtitle = "Edad en grupos quinquenales"
    )

Transición demográfica Jamaica décadas

poblacion_jm %>%
  filter(str_detect(year, "0$")) %>%
  ggplot(aes(x = edad_quinquenal, y = porcentaje_total, fill = sexo)) +
    geom_col(alpha = 5) +
    facet_wrap(~paste("Año", year), ncol = 10) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(
      legend.position = "bottom",
      strip.text = element_text(size = 7, face = "bold")
    ) +
    labs(
      y = "Porcentaje de la población total",
      x = "Quinquenios de edad",
      title = "Transición demográfica en Jamaica",
      subtitle = "Estimaciones y proyecciones de población"
    )

##Pirámide suave con geom_area

jm <- poblacion_jm %>%
  filter(year == 2000, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de población por edad Jamaica 2000',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(jm)

jm <- poblacion_jm %>%
  filter(year == 2010, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de población por edad Jamaica 2010',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(jm)

jm <- poblacion_jm %>%
  filter(year == 2020, edad < 100) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    labs(
      title = 'Distribución de población por edad Jamaica 2020',
      x = "Edad",
      y = 'Porcentaje de la población total'
    )
print(jm)

##Calculamos las transición demografica

p5 <- poblacion_jm %>%
  filter(edad < 105) %>%
  ggplot(aes(x = edad, y = porcentaje_total, fill = sexo)) +
    geom_area(alpha = 5) +
    coord_flip() +
    scale_fill_manual(values = c("midnightblue", "darkred")) +
    scale_y_continuous(labels = abs) +
    theme_minimal() +
    theme(legend.position = "bottom") +
    transition_time(year) +
    labs(
      title = 'Distribución de la población por edad, año: {as.integer(frame_time)}',
      x = "Edad",
      y = 'Porcentaje de la población total Jamaica 1950-2020',
      caption = "Créditos: William Gutierrez, datos de ONU"
    )

animate(p5, nframes = 60, fps = 5, renderer = gifski_renderer("piramide_animada_Jamaica.gif"))