Hacer un mapa de Nicaragua en R

El gran número de programadores que han apoyado a la iniciativa libre de R, ha influído en muchos de sus usos avanzados, algunas de estos usos apenas con mínima relación con las estadísticas. Ahora en R podemos crear páginas web de informes, hacer presentaciones, elaborar documentos, gráficos dinámicos, analizar canciones, mapas, etc. Lo bueno que nos disponen de sus paquetes para trabajar estos elementos que hace años se pensaban en R y sin conocimientos de programación no llegaríamos tan lejos. Ahora pues veremos como trabajar con mapa.

Los trazos y datos de un mapa están contenidos en un archivo llamado shapefile, existen otras extensiones a shp  pero esta es más conocida en el mundo del trazo de mapas.

Primero necesitamos ese shapefile y segundo, tener claro qué datos vamos a representar en el mapa.

El conjunto de paquetes a usar son:
install.packages("sp")
install.packages("maptools")
install.packages("ggplot2")
install.packages("maptools")

Las anteriores líneas son para instalar en caso que no se encuentren ya en el R instalado en la computadora.

Una vez instalados hay que activarlos
library("mapproj")
library("ggplot2")


Hay que decirle a R que lea el shapefile:
presencia <- readShapePoly('C:/Users/Deybi.Morales/Box Sync/FOGADE/FOGADE/Informe anual 2014/Nicaragua/NICARAGUA/shape/CGeo/depart_750k_p.shp')

Le he llamado presencia porque voy a graficar representar los niveles de cobertura de Bancentro Lafise en Nicaragua. Estos datos están actualizados a Diciembre del 2014. Obtenga el archivo shapefile haciendo clic aquí.

Aplicando la siguiente línea veremos la tabla que contiene el shapefile.
View(presencia)



Observe que tenemos una base de datos pero a R no se le ha creado la capacidad para agregar una nueva columna como se puede hacer en Excel. Entonces yo crearé una lista respetando el orden de departamento (en este caso polígono N_DEPTO).  Quiero agregar el números de ventanillas y/o sucursales por departamento. Lo sea cero, cero pero si no hay datos en tal polígono entonces agrego NA. Mi lista generada se llama bancentro.
bancentro = c(NA,NA,NA,NA,NA,2,1,0,2,4,7,2,4,4,3,NA,NA,NA,NA,NA,NA,NA,5,2,1,5,4,23,4)

El siguiente paso es agregarla a la tabla, primero extraemos la tabla del shapefile y le llamo para mantener mi secuencia presencia2.
presencia2 <- as.data.frame(presencia)
Ahora agrego la lista:
presencia2 <- data.frame(presencia, bancentro)

Pueden verificar con View que ha sido posible agregar una nueva columna.

Próximo paso es extraer las coordenadas del mapa, esta está incluida en presencia:
presencia3 <- sp2tmap(presencia)

presencia3 son entonces las coordenadas que trazan el mapa de nicaragua, con View puedes mirarlas que son x y y. Prosedimos a llamarlas como tal, algunos usuarios le llama longitud y altitud.
names(presencia3) <- c("id", "x", "y")

Ahora pues vamos a unir las coordenadas con las tablas:
presencia4 <- merge(x = presencia2, y = presencia3, by.x = "OBSERVACION", by.y = "id")
ERROR, NO PODEMOS UNIR SIN QUE LE DIGAMOS A R LA GUIA PARA UBICAR CADA OBSERVACIÓN CON SU COORDENADA. A ESTA LE LLAMAREMOS "OBSERVACION" QUE SE VA UBICAR SEGUN "ID".

A cada observación le corresponde un conjunto de coordenadas, son 29 observaciones. La genero de 1 al 9.

OBSERVACION <- seq(1:29,1)

La introducimos a presencia2
presencia2 <- data.frame(presencia, bancentro, OBSERVACION)

Proseguimos pues aplicando de nuevo
presencia4 <- merge(x = presencia2, y = presencia3, by.x = "OBSERVACION", by.y = "id")

presencia4 ya es una unión de las coordenadas con su respectiva observacion, polígono o departamento como quieran llamarle.

Para graficar en el mapa de Nicaragua, tenemos el paquete sp y ggplot. Vamos a usar la sintasis de ggplot.

Para verificar que sea el mapa de Nicaragua (sarcamos), no está demás graficarlo:
ggplot(data = presencia4, aes(x=x, y=y, group = OBSERVACION)) + geom_polygon(color = "black", fill = "white")



Último paso colorearlo:
ggplot() +
  geom_polygon( aes( x, y, group = OBSERVACION, fill=bancentro), data = presencia4) +
  scale_fill_gradient2(low = "lightblue", mid = "blue", high = "darkblue",
                       midpoint=11, na.value = "white", guide="colourbar", name="Ventanillas y/o Sucursales")




Aquí tenemos pues la cobertura en ventanillas y sucursales de Lafise Bancentro. Hay que jugar un poco para nivelar los colores y estos sean distinguibles. En el caso de Madriz no tenemos sucursales, pero en Jinotega y Rio San Juan tenemos 1 sucursal o ventanilla cada uno. Managua tiene 23 por eso es la mas oscura.

Espero que haya sido de utilidad.

Deybi Morales León
Economista
morales.economia@gmail.com


Comentarios

  1. Estimado Deybi al intentar cargar el archivo .shp resulta un error, indagando este tipo de archivo requiere los archivos .shx y .dbf. ¿Los tendrá disponible?

    ResponderEliminar
  2. > presencia<- readShapePoly(file.choose())
    Error in getinfo.shape(filen) : Error opening SHP file
    In addition: Warning message:
    readShapePoly is deprecated; use rgdal::readOGR or sf::st_read

    ResponderEliminar

Publicar un comentario

Envíanos un mensaje

Nombre

Correo electrónico *

Mensaje *