En este ejercicio se realizará una gráfica de cuerdas que muestre la cantidad de personas nacidas en una región económica distinta a la que vivían en el momento del Censo de Población y Vivienda 2020 en México.
Los datos provienen del Instituto Nacional de Geografía e Informática (INEGI) en donde se pueden realizar la búsqueda de personas por entidad federativa según el lugar de nacimiento. Por su parte, las regiones provienen de la propuesta realizada por el geógrafo Ángel Bassols Batalla. Se trabajará con la cantidad total de las personas y no con porcentajes.
Primero se llaman a las librerías necesarias. Tidyverse es una colección de paquetes orientados a la manipulación, importación, exploración y visualización de datos, mientras que Circlize es una librería útil para realizar gráficas circulares como las de cuerdas.
library(tidyverse)
library(circlize)
Después se lee el archivo con la información. Es un archivo de texto separado por comas (csv) llamado “MigracionInternaxRegiones”
datos <- read.csv("MigraciónInternaxRegiones.csv", stringsAsFactors = TRUE, encoding = "UTF-8")
Procedemos a visualizar los datos mediante la función head
head(datos)
## X.U.FEFF.Region Noroeste Norte Noreste Occidente Centro Golfo Sur Península
## 1 Noroeste 20.97 11.53 3.47 17.75 22.46 5.45 18.02 0.35
## 2 Norte 1.86 2.99 1.60 9.36 33.67 20.46 17.17 12.88
## 3 Noreste 7.87 4.41 1.98 31.58 12.06 13.73 22.79 5.58
## 4 Occidente 5.44 9.94 3.29 11.29 46.53 10.08 11.46 1.97
## 5 Centro 7.07 16.17 3.14 15.40 26.83 19.20 11.54 0.65
## 6 Golfo 32.20 10.55 1.01 9.61 32.45 5.46 8.39 0.34
Se aprecia que se trata de una tabla donde se identifica la cantidad de personas nacidas en cada una de las regiones económicas de México.
Cada una de las columnas de este dataframe se transformará en una lista.
Región <- datos$X.U.FEFF.Region
Noroeste <- datos$Noroeste
Norte <- datos$Norte
Noreste<- datos$Noreste
Occidente <- datos$Occidente
Centro <- datos$Centro
Golfo <- datos$Golfo
Sur <- datos$Sur
Peninsula <- datos$Península
Y ahora se conformará una matriz uniendo las listas anteriores con la función rbind() e indicando el nombre de las columnas y las filas con cada una de las regiones del país (por eso se tiene una matriz de 8 por 8)
matriz = matrix(rbind(Noroeste, Norte, Noreste, Occidente, Centro, Golfo, Sur, Peninsula), nrow = 8, ncol = 8)
rownames(matriz) <- (Región)
colnames(matriz) <- (Región)
matriz
## Noroeste Norte Noreste Occidente Centro Golfo Sur Yucatán
## Noroeste 20.97 1.86 7.87 5.44 7.07 32.20 2.86 6.15
## Norte 11.53 2.99 4.41 9.94 16.17 10.55 29.71 5.31
## Noreste 3.47 1.60 1.98 3.29 3.14 1.01 11.04 8.11
## Occidente 17.75 9.36 31.58 11.29 15.40 9.61 15.48 11.79
## Centro 22.46 33.67 12.06 46.53 26.83 32.45 22.30 43.14
## Golfo 5.45 20.46 13.73 10.08 19.20 5.46 12.14 6.12
## Sur 18.02 17.17 22.79 11.46 11.54 8.39 6.05 18.03
## Yucatán 0.35 12.88 5.58 1.97 0.65 0.34 0.43 1.34
Antes de generar la gráfica de cuerdas indicaremos un color distinto para cada una de las regiones con la función grid.col.
grid.col = c("Noroeste" = "#68c2c8", "Norte" ="#955dca", "Noreste" = "#cc7d28", "Occidente" = "#36893b", "Centro" ="#c84678", "Golfo"="#85462b", "Sur" ="#d9b663", "Península" ="#7e9f19")
Finalmente se crea la grpafica de cuerdas
chordDiagram(
x = matriz, #datos
grid.col = grid.col, #colores
transparency = 0.25, #transparencia
directional = 1, #dirección
direction.type = c("arrows", "diffHeight"), #Tipo de dirección y ancho
diffHeight = 0, # Elimina un espacio innecesario
annotationTrack = "grid", #nombre de sectores
annotationTrackHeight = c(0.07, 0.07), #altura del espacio para nombres
link.arr.type = "big.arrow",
link.largest.ontop = TRUE,
link.lwd = 0.8, link.lty = 1, #Ancho y tipo de líneas
link.border = "gray50") #Color de linea
for(si in get.all.sector.index()) {
xlim = get.cell.meta.data("xlim", sector.index = si, track.index = 1)
ylim = get.cell.meta.data("ylim", sector.index = si, track.index = 1)
circos.text(mean(xlim), mean(ylim), si, sector.index = si, track.index = 1,
facing = "bending", cex= 0.6, col = "gray90")
}