INFORMACIÓN DE CONTACTO
GMAIL: renzoangeldelacruz@gmail.com
GitHub: https://github.com/delacruz-renzo
Las pirámides poblacionales, también denominadas pirámides demográficas, son representaciones gráficas de la estructura de una población, clasificados por sexo y grupos etarios, en un espacio geográfico y período determinados. Estas representaciones adoptan la forma de un doble histograma horizontal, en el que los datos suelen agruparse en intervalos quinquenales (0–4, 5–9, 10–14, etc.). Convencionalmente, la población masculina se dispone a la izquierda del eje central y la población femenina a la derecha.
De acuerdo con la forma que adopte, la pirámide poblacional se clasifica en cinco tipos:
Pirámide Progresiva (Creciente, Triangular o Expansiva): Se caracteriza por una base amplia, mientras que las secciones medias y superiores son más estrechas. Este tipo de pirámide refleja una mayor proporción de población juvenil en comparación con la adulta.
Pirámide Estacionária (Estancada, Equilibrada o Campaniforme): Se caracteriza por una base y una parte media de amplitud similar, mientras que la sección superior es más estrecha. En este tipo de pirámide, la proporción de población juvenil y adulta es comparable.
Pirámide Regresiva (Decadencia, Bulbo o Rombo): Se caracteriza por una base y una parte superior más estrechas en comparación con la sección media, que es más amplia. Este tipo de pirámide refleja una mayor proporción de población adulta en relación con los juveniles.
Pirámide Invertida: Se caracteriza por una base y una parte media más estrechas en comparación con la sección superior, que es más amplia. Este tipo de pirámide refleja un proceso de envejecimiento progresivo de la población. Aunque podría considerarse un subtipo de las pirámides regresivas, a menudo se describe como una categoría distinta debido a su enfoque particular en el envejecimiento poblacional.
Pirámide Desequilibrada: Este tipo de pirámide se presenta cuando existe una desproporción, principalmente en la distribución por sexo. No se reconoce ampliamente como una categoría independiente, pero podría considerarse una variación de cualquiera de los tipos anteriores, dependiendo de las circunstancias particulares de la población que se está analizando.
Las pirámides poblacionales son herramientas fundamentales en el análisis demográfico, ya que permiten identificar tendencias clave como el crecimiento de la población, el envejecimiento demográfico y las tasas de natalidad y mortalidad. Estos gráficos no solo ofrecen una representación visual clara de la estructura poblacional, sino que también juegan un papel crucial en la formulación de políticas públicas. Al proporcionar información sobre las proyecciones de población, permiten anticipar las necesidades futuras en áreas como infraestructura, educación, salud y empleo, lo que contribuye a una planificación más eficiente y contribuye al bienestar social de las comunidades.
El objetivo principal de este documento Markdown es proporcionar una guía sobre cómo elaborar gráficos de pirámides poblacionales utilizando el lenguaje de programación R.
Los datos utilizados en este documento provienen del Censo Nacional 2017, realizado por el Instituto Nacional de Estadística e Informática (INEI). Específicamente, se utilizo la información corresponde a la distribución de la población masculina y femenina por grupos etarios correspondientes a la región de Lima.
library(readxl)
library(dplyr)
# Importar datos "xlsx".
data <- read_excel("d:/Lenovo/Desktop/GEO/PROJECT_4/data.xlsx")
head(data, 18)
## # A tibble: 18 × 6
## Grupos Hombre Mujer Año Region Fuente
## <chr> <dbl> <dbl> <dbl> <chr> <chr>
## 1 0 a 4 39164 38678 2017 Lima INEI
## 2 5 a 9 34851 33336 2017 Lima INEI
## 3 10 a 14 40638 38644 2017 Lima INEI
## 4 15 a 19 34830 33510 2017 Lima INEI
## 5 20 a 24 37611 38192 2017 Lima INEI
## 6 25 a 29 34618 34701 2017 Lima INEI
## 7 30 a 34 34695 34349 2017 Lima INEI
## 8 35 a 39 31330 30705 2017 Lima INEI
## 9 40 a 44 25427 25270 2017 Lima INEI
## 10 45 a 49 20612 20553 2017 Lima INEI
## 11 50 a 54 15725 15561 2017 Lima INEI
## 12 55 a 59 13478 13512 2017 Lima INEI
## 13 60 a 64 10231 10254 2017 Lima INEI
## 14 65 a 69 7974 8320 2017 Lima INEI
## 15 70 a 74 6167 6746 2017 Lima INEI
## 16 75 a 79 5533 6238 2017 Lima INEI
## 17 80 a 84 3531 3614 2017 Lima INEI
## 18 85 y más 4456 5288 2017 Lima INEI
str(data)
## tibble [18 × 6] (S3: tbl_df/tbl/data.frame)
## $ Grupos: chr [1:18] "0 a 4" "5 a 9" "10 a 14" "15 a 19" ...
## $ Hombre: num [1:18] 39164 34851 40638 34830 37611 ...
## $ Mujer : num [1:18] 38678 33336 38644 33510 38192 ...
## $ Año : num [1:18] 2017 2017 2017 2017 2017 ...
## $ Region: chr [1:18] "Lima" "Lima" "Lima" "Lima" ...
## $ Fuente: chr [1:18] "INEI" "INEI" "INEI" "INEI" ...
# Calcular los porcentajes de la población por grupo etario.
data1 <- data %>%
mutate(Hombre_porcentaje = Hombre/sum(Hombre)*100,
Mujer_porcentaje = Mujer/sum(Mujer)*100) %>%
select(Grupos, Hombre_porcentaje, Mujer_porcentaje)
head(data1, 18)
## # A tibble: 18 × 3
## Grupos Hombre_porcentaje Mujer_porcentaje
## <chr> <dbl> <dbl>
## 1 0 a 4 9.77 9.73
## 2 5 a 9 8.69 8.39
## 3 10 a 14 10.1 9.72
## 4 15 a 19 8.69 8.43
## 5 20 a 24 9.38 9.61
## 6 25 a 29 8.64 8.73
## 7 30 a 34 8.65 8.64
## 8 35 a 39 7.82 7.73
## 9 40 a 44 6.34 6.36
## 10 45 a 49 5.14 5.17
## 11 50 a 54 3.92 3.92
## 12 55 a 59 3.36 3.40
## 13 60 a 64 2.55 2.58
## 14 65 a 69 1.99 2.09
## 15 70 a 74 1.54 1.70
## 16 75 a 79 1.38 1.57
## 17 80 a 84 0.881 0.909
## 18 85 y más 1.11 1.33
# Convertir la columnna Grupos en tipo factor (asignar orden específico).
data1$Grupos <- factor(data1$Grupos, levels = unique(data1$Grupos))
La librería pyramid es una herramienta especializada en la creación de gráficos de pirámides poblacionales, permitiendo su personalización de manera sencilla y eficiente. Es ampliamente utilizada en análisis demográficos y geográficos.
Puedes consultar la documentación completa de la librería pyramid en el siguiente enlace: https://cran.r-project.org/package=pyramid
# Graficar pirámide poblacional.
library(pyramid)
pyramids(Left = data1$Hombre_porcentaje,
Right = data1$Mujer_porcentaje,
Center = data1$Grupos,
Rlab = "Mujeres (%)", Llab = "Hombres (%)",
Clab = "Grupo de Edad", Cgap=0.5,
Lcol = "#07b6c3", Rcol = "#e0706d",
main = "Pirámide Poblacional de la Región Lima, Perú - 2017")
La librería ggplot2 es una de las más populares en R para la creación de gráficos y visualización de datos. Se basa en la gramática de los gráficos (Grammar of Graphics), un sistema que descompone un gráfico en componentes básicos como datos, estética, geometría, estadísticas, coordenadas y facetas. Esto permite crear visualizaciones complejas de manera intuitiva y flexible.
Puedes consultar la documentación completa de la librería ggplot2 en el siguiente enlace: https://cran.r-project.org/package=ggplot2
library(tidyverse)
# Convertir el DataFrame de un formato ancho a largo.
data2 <- data1 %>% gather(Sexo, Poblacion, -1)
head(data2)
## # A tibble: 6 × 3
## Grupos Sexo Poblacion
## <fct> <chr> <dbl>
## 1 0 a 4 Hombre_porcentaje 9.77
## 2 5 a 9 Hombre_porcentaje 8.69
## 3 10 a 14 Hombre_porcentaje 10.1
## 4 15 a 19 Hombre_porcentaje 8.69
## 5 20 a 24 Hombre_porcentaje 9.38
## 6 25 a 29 Hombre_porcentaje 8.64
# Graficar pirámide poblacional con un "theme_classic".
library(ggplot2)
ggplot(data2, aes(x = Grupos, fill = Sexo,
y = ifelse(Sexo == "Hombre_porcentaje", -Poblacion, Poblacion))) +
geom_bar(stat = "identity") +
labs(y = "Porcentaje (%)", x = "Grupo de Edad") +
ggtitle("Pirámide Poblacional de la Región Lima, Perú - 2017") +
coord_flip() +
theme_classic() +
scale_y_continuous(breaks = c(seq(-10, 0, by = 2), seq(0, 10, by = 2)),
labels = c(seq(-10, 0, by = 2) * -1, seq(0, 10, by = 2))) +
scale_fill_manual(values = c("Hombre_porcentaje" = "#07b6c3", "Mujer_porcentaje" = "#e0706d"),
labels = c("Hombres", "Mujeres")) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
legend.title = element_text(hjust = 0.5, face = "bold"))
# Graficar pirámide poblacional con un "theme_minimal".
library(ggplot2)
ggplot(data2, aes(x = Grupos, fill = Sexo,
y = ifelse(Sexo == "Hombre_porcentaje", -Poblacion, Poblacion))) +
geom_bar(stat = "identity") +
labs(y = "Porcentaje (%)", x = "Grupo de Edad") +
ggtitle("Pirámide Poblacional de la Región Lima, Perú - 2017") +
coord_flip() +
theme_minimal() +
scale_y_continuous(breaks = c(seq(-10, 0, by = 2), seq(0, 10, by = 2)),
labels = c(seq(-10, 0, by = 2) * -1, seq(0, 10, by = 2))) +
scale_fill_manual(values = c("Hombre_porcentaje" = "#07b6c3", "Mujer_porcentaje" = "#e0706d"),
labels = c("Hombres", "Mujeres")) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
legend.title = element_text(hjust = 0.5, face = "bold"))
# Graficar pirámide poblacional con un "theme_gray".
library(ggplot2)
ggplot(data2, aes(x = Grupos, fill = Sexo,
y = ifelse(Sexo == "Hombre_porcentaje", -Poblacion, Poblacion))) +
geom_bar(stat = "identity") +
labs(y = "Porcentaje (%)", x = "Grupo de Edad") +
ggtitle("Pirámide Poblacional de la Región Lima, Perú - 2017") +
coord_flip() +
theme_gray() +
scale_y_continuous(breaks = c(seq(-10, 0, by = 2), seq(0, 10, by = 2)),
labels = c(seq(-10, 0, by = 2) * -1, seq(0, 10, by = 2))) +
scale_fill_manual(values = c("Hombre_porcentaje" = "#07b6c3", "Mujer_porcentaje" = "#e0706d"),
labels = c("Hombres", "Mujeres")) +
theme(plot.title = element_text(hjust = 0.5, face = "bold"),
legend.title = element_text(hjust = 0.5, face = "bold"))