Gustavo A. Caffaro

View the Project on GitHub

Tutorial paquete ‘mapaRD’

En este tutorial veremos el potencial del paquete mapaRD para graficar mapas coropléticos de República Dominicana.

Puedes encontrar el repositorio de este paquete en GitHub.

Descripción

El paquete mapaRD permite graficar mapas para distintas divisiones territoriales. Por el momento el paquete tiene completa integración con las divisiones regionales, provinciales y municipales del territorio dominicano.

El objetivo del paquete es suministrar una función sencilla y poderosa que permita de manera succinta conectar datos a mapas.

El paquete tiene tres funciones principales: mapaRD(), ggmapaRD(), tabla_toponimia(). Las primeras dos funciones tienen el mismo objetivo de graficar los mapas, y se distinguen en que mapaRD() utiliza el motor gráfico nativo en R (y por tanto es más veloz), mientras que la función ggmapaRD() utiliza el afamado paquete ggplot2 para generar los gráficos. Yo recomiendo fuertemente el uso de la última.

Instalación

Para instalar este paquete, se requiere el paquete devtools. Luego debe correr el siguiente código:

devtools::install_github("gcaff/mapaRD")

Para seguir los ejemplos de este documento, también debe tener cargados los paquetes ggplot2 y dplyr:

library(ggplot2)
library(dplyr)
library(mapaRD)

mapaRD()

Con esta función podemos graficar un mapa coroplético de República Dominicana.

En este ejemplo, quisiéramos ver un mapa que rellene cada región del país dependiendo de su población. Primero importemos los datos:

d <- read.csv("http://gcaff.github.io/data/RD/pob_region_rd.csv")
head(d)

##   ID                región   x2010   x2011   x2012   x2013   x2014
## 1 10  Región Metropolitana 3351393 3413273 3474896 3537578 3598513
## 2  1    Región Cibao Norte 1522302 1532585 1542762 1553392 1563236
## 3  2      Región Cibao Sur  713303  715983  718607  721444  723916
## 4  3 Región Cibao Nordeste  626363  628355  630295  632430  634231
## 5  4 Región Cibao Noroeste  395424  397819  400199  402682  404966
## 6  5       Región Valdesia 1031736 1040105 1048388 1056996 1065059

Como pueden ver, estos datos contienen información poblacional, para los años 2010-2014, para cada región del país. Estos datos provienen de la Oficina Nacional de Estadística.

Las funciones de este paquete usan la variable “ID” (en mayúscula), para hacer la conexión entre las divisiones territoriales y la data. Por tanto, es importante que el data frame que pasemos en las funciones del paquete usen “ID” como identificador.

Ahora grafiquemos la población por región para el año 2010:

p1 <- mapaRD(d,"x2010",nivel="regional", idName = "ID2") %>%
  title(main="Población por región, 2010")
p1

alt text

Los argumentos de la función mapaRD son: el dataset d, el nombre de la variable entre comillas "x2010", el nivel territorial que queremos graficar "regional", y el nombre de la columna identificadora, "ID2". Esta última variable es muy importante para hacer las conexiones entre las coordenadas en el gráfico y la data que estamos suministrando a la función. Este mecanismo es una posible solución al problema de falta de estandarización en los códigos identificadores del territorio dominicano. La otra opción para el argumento idiName es "ID", que correspondería a la concatenación de los códigos de los niveles territoriales superiores al que está en cuestión. Para más información, ver la función tabla_toponimia().

ggmapaRD()

La función ggmapaRD() recibe exactamente los mismos argumentos que la función mapaRD(), pero retorna un objeto ggplot:

p2 <- ggmapaRD(d,"x2010",nivel="regional", idName = "ID2") +
  ggtitle("Población por región, 2010")
p2

alt text

La ventaja de usar esta función es que permite toda la funcionalidad del universo ggplot2, como el uso de temas, customización de los colores, etc.

Para cambiar el color del mapa podemos usar la función de ggplot2 scale_fill_gradient():

p2 +
  scale_fill_gradient(low = "black", high = "red")

alt text

Para hacer un mapa a nivel provincial:

# descargamos datos del COVID-19 a la fecha
d <- read.csv("https://gcaff.github.io/covid-rd/data/covid_data_rd.csv")

#eliminamos la fila de no especificados
d <- d%>%
  filter(provincia != "No especificado")

# seleccionar una fecha y renombrar la columna de codigos
dd <- d %>%
  filter(fecha == "16/5/20") %>%
  rename(ID=cod_prov)

# graficar
ggmapaRD(dd,"casos_acum",nivel="provincial", idName = "ID2") +
    scale_fill_gradient(low = "white", high = "red") +
    geom_polygon(alpha=0, color="black") + # agregar bordes a las fronteras
    ggtitle("Casos Acumulados de COVID-19 al 16 de mayo del 2020")

alt text

Por defecto, la función ggmapaRD() admite NAs preservando el mapa dominicano completo. Por ejemplo, digamos que queremos enfocarnos en el Gran Santo Domingo. Llamar la función produce el siguiente gráfico:

dd1 <- dd %>%
  filter(ID %in% c(1,32)) # seleccionar solo el DN y SD

dd1 %>%
  ggmapaRD("casos_acum",nivel="provincial", idName = "ID2") +
  ggtitle("Casos Acumulados de COVID-19 al 16 de mayo del 2020")

alt text

Si quisiéramos excluir todos los valores NAs del mapa incluimos el argumento na.rm=TRUE:

dd1 %>%
  ggmapaRD("casos_acum",nivel="provincial", na.rm=TRUE, idName = "ID2") +
  ggtitle("Casos Acumulados de COVID-19 en el Gran Santo Domingo,
          al 16 de mayo del 2020")

alt text

Finalmente, para datos municipales, pasamos el argumento nivel="municipal" a la función:

# generar datos aleatorios municipales
set.seed(12345)
d <- data.frame(ID=1:155,x=runif(155))

# graficar
d %>%
  ggmapaRD("x",nivel="municipal", idName = "ID2")

alt text

tabla_toponimia()

La tercera función de este paquete, tabla_toponimia(), sirve de guía para entender la relación entre los identificadores y los nombres de las divisiones territoriales. Por ejemplo, para saber cuáles son los códigos de las regiones del país:

tabla_toponimia("regional")

##     REG                    TOPONIMIA ID ID2 NIVEL
## 1   01           REGIÓN CIBAO NORTE 01   1   REG
## 2   02             REGIÓN CIBAO SUR 02   2   REG
## 3   03        REGIÓN CIBAO NORDESTE 03   3   REG
## 4   04        REGIÓN CIBAO NOROESTE 04   4   REG
## 5   05              REGIÓN VALDESIA 05   5   REG
## 6   06            REGIÓN ENRIQUILLO 06   6   REG
## 7   07              REGIÓN EL VALLE 07   7   REG
## 8   08                  REGIÓN YUMA 08   8   REG
## 9   09               REGIÓN HIGUAMO 09   9   REG
## 10  10 REGIÓN OZAMA O METROPOLITANA 10  10   REG