Cómo crear una pirámide de población en R

Una pirámide de población es un gráfico que muestra la distribución por edad y sexo de una población determinada. Es un gráfico útil para comprender fácilmente la composición de una población, así como la tendencia actual en el crecimiento de la población.

Si una pirámide de población tiene forma rectangular, es una indicación de que la población está creciendo a un ritmo más lento; las generaciones anteriores están siendo reemplazadas por nuevas generaciones de aproximadamente el mismo tamaño.

Si una pirámide de población tiene forma de pirámide, es una indicación de que la población está creciendo a un ritmo más rápido; las generaciones mayores están produciendo nuevas generaciones más grandes.

Dentro del gráfico, el sexo se muestra en los lados izquierdo y derecho, la edad se muestra en el eje y, y el porcentaje o la cantidad de la población se muestra en el eje x.

Este tutorial explica cómo crear una pirámide de población en R.

Crear una pirámide de población en R

Supongamos que tenemos el siguiente conjunto de datos que muestra el porcentaje de composición de una población según la edad (0 a 100 años) y el sexo (M = «Hombre», F = «Mujer»):

#Haga que este ejemplo sea reproducible
set.seed (1)

#create data frame
 data <- data.frame (age = rep (1: 100, 2), gender = rep (c ("M", "F"), each = 100))

#add datos de variables
 de población $ población <- 1 / sqrt (datos $ edad) * runif (200, 10000, 15000)

#convertir la variable de población a datos porcentuales
 $ población <- datos $ población / suma (datos $ población) * 100

#ver las primeras seis filas del encabezado del conjunto de datos
 (datos)

# edad género población
# 1 1 M 2.424362
# 2 2 M 1.794957
# 3 3 M 1.589594
# 4 4 M 1.556063
# 5 5 M 1.053662
# 6 6 M 1.266231

Podemos crear una pirámide de población básica para este conjunto de datos usando la biblioteca ggplot2 :

#load ggplot2
 biblioteca (ggplot2)

#crear pirámide de población
ggplot (datos, aes (x = edad, relleno = género,
                 y = ifelse (test = gender == "M",
                            sí = -población, no = población))) + 
  geom_bar (stat = "identidad") +
  scale_y_continuous (etiquetas = abs, límites = max (datos $ población) * c (-1,1)) +
  coord_flip ()

Pirámide de población usando ggplot2

Agregar títulos y etiquetas

Podemos agregar títulos y etiquetas de eje a la pirámide de población usando el argumento labs () :

ggplot (datos, aes (x = edad, relleno = género,
                 y = ifelse (test = gender == "M",
                            sí = -población, no = población))) + 
  geom_bar (stat = "identidad") +
  scale_y_continuous (etiquetas = abs, límites = max (datos $ población) * c (-1,1)) +
  laboratorios (título = "Pirámide de población", x = "Edad", y = "Porcentaje de población") +
  coord_flip ()

Pirámide de población en R usando ggplot2

Modificar los colores

Podemos modificar los dos colores usados ​​para representar los géneros usando el argumento scale_colour_manual () :

ggplot (datos, aes (x = edad, relleno = género,
                 y = ifelse (test = gender == "M",
                            sí = -población, no = población))) + 
  geom_bar (stat = "identidad") +
  scale_y_continuous (etiquetas = abs, límites = max (datos $ población) * c (-1,1)) +
  laboratorios (título = "Pirámide de población", x = "Edad", y = "Porcentaje de población") +
  scale_colour_manual (valores = c ("rosa", "azul acero"), 
                      estética = c ("color", "relleno")) +
  coord_flip ()

Pirámide de población en R con colores personalizados

Pirámides de población múltiple

También es posible trazar juntas varias pirámides de población usando el argumento facet_wrap () . Por ejemplo, suponga que tenemos datos demográficos para los países A, B y C. El siguiente código ilustra cómo crear una pirámide de población para cada país:

#Haga que este ejemplo sea reproducible
set.seed (1)

#create data frame
 data_multiple <- data.frame (edad = rep (1: 100, 6),
                   género = rep (c ("M", "F"), cada uno = 300),
                   país = rep (c ("A", "B", "C"), cada uno = 100, veces = 2))

#add población variable
 data_multiple $ población <- round (1 / sqrt (data_multiple $ edad) * runif (200, 10000, 15000), 0)

#ver las primeras seis filas del encabezado del conjunto de datos
 (data_multiple)

# edad sexo país población
# 1 1 MA 11328
# 2 2 MA 8387
# 3 3 MA 7427
# 4 4 MA 7271
# 5 5 MA 4923
# 6 6 MA 5916

#cree una pirámide de población por país
 ggplot (data_multiple, aes (x = age, fill = gender,
                          y = ifelse (test = gender == "M",
                                     sí = -población, no = población))) + 
  geom_bar (stat = "identidad") +
  scale_y_continuous (etiquetas = abs, límites = max (data_multiple $ población) * c (-1,1)) +
  laboratorios (y = "Cantidad de población") + 
  coord_flip () +
  facet_wrap (~ país) + 
  tema (axis.text.x = element_text (ángulo = 90, hjust = 1))  #rotar etiquetas del eje x

Pirámides de población en R con facet_wrap ()

Modificar el tema

Por último, podemos modificar el tema de los gráficos. Por ejemplo, el siguiente código usa theme_classic () para dar a los gráficos un aspecto más minimalista:

ggplot (data_multiple, aes (x = edad, fill = género,
                          y = ifelse (test = gender == "M",
                                     sí = -población, no = población))) + 
  geom_bar (stat = "identidad") +
  scale_y_continuous (etiquetas = abs, límites = max (data_multiple $ población) * c (-1,1)) +
  laboratorios (y = "Cantidad de población") + 
  coord_flip () +
  facet_wrap (~ país) + 
  theme_classic () +
  tema (axis.text.x = element_text (ángulo = 90, hjust = 1))

Tema clásico en R

O puede utilizar ggthemes personalizados. Para obtener una lista completa de ggthemes, consulte la página de documentación .

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

El análisis discriminante lineal es un método que puede utilizar cuando tiene un conjunto de variables predictoras y le gustaría…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!