7.5 Creando mapas
Los mapas son una herramienta gráfica poderosa para la visualización de datos. Particularmente, para indicadores sociales-demográficos estos son una gran referencia visual para desagregaciones a nivel País, región, departamento, provincia, distrito, municipio, comuna, etc. R
posee un sin fin de métodos de programación para representar dichos mapas.
Para graficar mapas es necesario contar con información geoespacial, datos que contienen las coordenadas o delimitaciones geográficas de determinado país o región. Sitios web como http://www.diva-gis.org/gdata ofrecen de manera gratuita bases de datos o shapes
que contienen los vectores asociados a las geografías correspondientes.
Dichos conjuntos de datos poseen observaciones sobre la longitud y latitud lo cuál permite graficar en R
un conjunto de puntos cuya unión en el gráfico formarán las formas los polígonos que dan forma a las áreas geográficas. Entre las distintas librería para realizar mapas en R
están tmap
y ggplot2
. A continuación, se ilustra cómo se generan mapas, inicalmente con la librería tmap
:
Inicialmente, para realizar el mapa hay que contar con el archivo de shepefile el cual se carga de la siguiente manera::
library(sf)
library(tmap)
<- read_sf("Data/shapeBigCity/BigCity.shp") shapeBigCity
Una vez cargado el shape, el mapa se genera usando las funciones tm_shape y lo que se desea graficar en el mapa se incluye con la función tm_polygons. Para este ejemplo, solo grafiquemos las regiones en el mapa:
tm_shape(shapeBigCity) +
tm_polygons(col = "Region")
Si ahora el objetivo es graficar en las regiones el procentaje de probreza para hombres, inicialmente se debe agregar esa información a la base de datos con la que se graficará el mapa como sigue:
<- tm_shape(
shape_temp %>% # shapefile
shapeBigCity left_join( # Agregando una variable
%>%
prop_RegionH_Pobreza filter(pobreza == 1), # Filtrando el nivel de interés.
by = "Region"))
Una vez generado la base de datos, se procede a crear el mapa. En este ejemplo, agregarán unos puntos de corte en el mapas que son definidos en el argumento brks como se muestra a continuación:
<- c(0, .2, .4, .6, 0.8, 1)
brks + tm_polygons(
shape_temp col = "prop",
breaks = brks,
title = "pobreza",
palette = "YlOrRd")
A modo de otro ejemplo, se desea graficar ahora los coeficientes de variación de las estimaciones de los ingresos medios obtenidas por el diseño a nivel de región:
<- svyby(~Income, ~Region, diseno,
prom_region
svymean,na.rm = T, covmat = TRUE,
vartype = c("cv"))
prom_region
Region | Income | cv | |
---|---|---|---|
Norte | Norte | 552.4 | 0.1002 |
Sur | Sur | 625.8 | 0.0997 |
Centro | Centro | 650.8 | 0.0945 |
Occidente | Occidente | 517.0 | 0.0894 |
Oriente | Oriente | 541.8 | 0.1323 |
<- c(0, 0.2, 1)
brks <- tm_shape(
shape_temp %>%
shapeBigCity left_join(
prom_region,by = "Region"))
+ tm_polygons(
shape_temp "cv",
breaks = brks,
title = "cv",
palette = c("#FFFFFF", "#000000"),
+ tm_layout(asp = 0) )
Ahora, realizar el mismo ejercicio anterior pero por zona y sexo:
<- diseno %>%
prom_region_Sex group_by(Region, Zone, Sex, pobreza) %>%
summarise(prop = survey_mean(vartype = "cv")) %>%
filter(pobreza == 1, Zone == "Rural", Sex == "Female")
<- tm_shape(
shape_temp %>%
shapeBigCity left_join(
prom_region_Sex,by = "Region"))
+ tm_polygons(
shape_temp "prop",
title = "Pobreza",
+ tm_layout(asp = 0) )
Como se comentó en la introducción de esta sección, los gráficos también se pueden hacer usando la librería ggplot2. Esta librería se apoya en las librerías biscale y cowplot. El procedimiento en R para hacer los mapas es muy similar al mostrado con la librería tmap y se realiza de la siguiente manera:
library(biscale)
library(cowplot)
<- shapeBigCity %>%
temp_shape left_join(
prom_region_Sex,by = "Region")
<- 3
k <- bi_class(temp_shape,
datos.RM.bi y = prop, x = prop_cv, dim = k,
style = "fisher")
<- ggplot() +
map.RM geom_sf(
data = datos.RM.bi,
aes(fill = bi_class, geometry = geometry),
colour = "white", size = 0.1) +
bi_scale_fill(pal = "GrPink", dim = k) +
bi_theme() +
theme(legend.position = "none")
map.RM
Ahora, para crear la leyenda del mapa se hace de la siguiente manera:
<- bi_legend(
legend1 pal = "GrPink", dim = k,
xlab = "Coeficiente de variaci<U+00F3>n",
ylab = "Pobreza", size = 8)
<- ggdraw() +
mapa1 draw_plot(map.RM, 0, 0, 1, scale = 0.7) +
draw_plot(legend1, 0.75, 0.4, 0.2, 0.2, scale = 1) +
draw_text("Estimaciones directas de la pobreza en la mujer rural",
vjust = -13, size = 18)
mapa1