# 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 = "-"))
)
# 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)
)
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"
)
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'
)
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"))
# 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
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"
)
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"
)
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)
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"))
# 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 = "-"))
)
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"
)
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"))
# 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>
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"
)
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"))
# 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
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"
)
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"))