Este es un cuaderno de R Markdown que ilustra cartografía temática para un departamento en Colombia. Ha sido creado, compilado y publicado desde RStudio.
Este cuaderno tiene como objetivo ayudar a los estudiantes de Geomatica Básica de la Universidad Nacional a aprender a hacer mapas temáticos en R. Todo estudiante debe replicar este cuaderno PERO adaptando sus contenidos a su departamento. Para este caso el departamento de Arauca y ademas a sido adaptado al idioma español.
La fecha límite para publicar este cuaderno es el 7 de noviembre de 2020 a las 11:59 a. M. Su publicación en RPubs cuenta como el segundo informe técnico del curso. Su nota representa el 15% de la nota final.
Como dice Amanda Briney, un mapa temático enfatiza un tema o tema, como la distribución promedio de las precipitaciones en un área o la densidad de población en un municipio. Se diferencian de los mapas de referencia generales porque no solo muestran características naturales y creadas por el hombre, como ríos, ciudades, subdivisiones políticas y carreteras. Si estos elementos aparecen en un mapa temático, son puntos de referencia para mejorar la comprensión del tema y el propósito del mapa.
Según Briney, “el factor más importante a considerar al diseñar mapas temáticos es la audiencia del mapa, que ayuda a determinar qué elementos deben incluirse en el mapa como puntos de referencia además del tema. Un mapa que se está haciendo para un científico político, por ejemplo, necesitaría mostrar límites políticos, mientras que uno para un biólogo podría necesitar contornos que muestren la elevación”.
Las fuentes de los datos de los mapas temáticos son muy importantes, enfatiza Briney. “Los cartógrafos deben encontrar fuentes de información precisas, recientes y confiables sobre una amplia gama de temas, desde características ambientales hasta datos demográficos, para hacer los mejores mapas posibles”.
Briney resume varias técnicas de mapeo temático que se utilizan con mayor frecuencia:
Qué representa los datos cuantitativos como un color y puede mostrar la densidad, el porcentaje, el valor promedio o la cantidad de un evento dentro de un área geográfica. Los colores secuenciales representan valores de datos positivos o negativos crecientes o decrecientes. Normalmente, cada color también representa un rango de valores.
Qué se utilizan en otro tipo de mapa para representar datos asociados con ubicaciones, como ciudades. Los datos se muestran en estos mapas con símbolos de tamaño proporcional para mostrar diferencias en las ocurrencias. Los círculos se utilizan con mayor frecuencia, pero también son adecuados los cuadrados y otras formas geométricas. La forma más común de dimensionar estos símbolos es hacer que sus áreas sean proporcionales a los valores que se van a representar utilizando software de mapeo o dibujo.
Qué utiliza isolíneas para representar valores continuos como los niveles de precipitación. Estos mapas también pueden mostrar valores tridimensionales, como la elevación, en mapas topográficos. Generalmente, los datos para mapas isarítmicos se recopilan a través de puntos medibles (por ejemplo, estaciones meteorológicas) o se recopilan por área (por ejemplo, toneladas de maíz por acre por condado). Los mapas isarítmicos también siguen la regla básica de que hay lados altos y bajos en relación con la isolina. Por ejemplo, en elevación, si la isolínea es de 500 pies, entonces un lado debe tener más de 500 pies y un lado debe ser más bajo.
Qué utiliza puntos para mostrar la presencia de un tema y mostrar un patrón espacial. Un punto puede representar una unidad o varias, dependiendo de lo que se esté representando.
Usaremos datos sobre Necesidades Básicas Insatisfechas (NBI) del Censo Nacional de Población y Vivienda 2018 que están disponibles en el Geoportal del DANE.
Los mapas temáticos son útiles para transmitir información demográfica. Puede explorar varios mapas temáticos del DANE usando este enlace.
Anteriormente, descargué el archivo NBI, en formato .xlsx, a mi computadora. Luego, usé Excel para eliminar datos de municipios que no se encuentran dentro del Departamento de Antioquia. También “limpié” los datos, que eliminé varias filas con imágenes institucionales o sin información. Estas filas se ubicaron tanto al principio como al final del archivo original. Conservo las columnas referentes a todo el municipio (es decir, eliminé las columnas correspondientes a “cabecera” y “zona rural”). Guardé los datos resultantes, correspondientes solo a los municipios antioqueños como NBI_Antioquia.xlsx. Luego, cargué el archivo en el directorio “ndvi” en la carpeta de mi proyecto en RStudio.
Limpiemos la memoria:
rm(list=ls())
Ahora, instalemos las bibliotecas que necesitamos.
list.of.packages <- c("tidyverse", "rgeos", "sf", "raster", "cartography", "SpatialPosition")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)
Luego, carguemos las bibliotecas.
library(tidyverse)
library(readxl)
library(rgeos)
library(raster)
library(sf)
library(cartography)
library(SpatialPosition)
Leamos el archivo csv con “estadisticas municipales agropecuarias” para Arauca.
nbi <- read_excel("./NBI_Arauca.xlsx")
Veamos cuáles son los atributos de los datos.
head(nbi)
Busquemos cuál es el municipio con el porcentaje más alto de NBI:
nbi %>%
slice(which.max(NBI)) -> max_nbi
max_nbi
Busquemos cuál es el municipio con el porcentaje más bajo de NBI:
nbi %>%
slice(which.min(NBI)) -> min_nbi
min_nbi
Clasifiquemos los municipios por NBI en orden descendente:
nbi %>%
arrange(desc(NBI)) -> desc_nbi
desc_nbi
Ya subí a RStudio los municipios dentro de Arauca.
Leamos los datos usando la biblioteca sf:
munic <- st_read("./MGN2017_81_ARAUCA/81_ARAUCA/ADMINISTRATIVO/MGN_MPIO_POLITICO.shp")
Reading layer `MGN_MPIO_POLITICO' from data source `C:\Users\danye\OneDrive\Documents\Inf2GMB\MGN2017_81_ARAUCA\81_ARAUCA\ADMINISTRATIVO\MGN_MPIO_POLITICO.shp' using driver `ESRI Shapefile'
Simple feature collection with 7 features and 9 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -72.36662 ymin: 6.036228 xmax: -69.42756 ymax: 7.104381
geographic CRS: WGS 84
Veamos qué hay dentro del atributo MPIO_CCDGO:
head(munic$MPIO_CNMBR)
[1] "ARAUCA" "PUERTO RONDÓN" "CRAVO NORTE" "ARAUQUITA" "FORTUL"
[6] "SARAVENA"
Podemos usar la función left_join para unir los municipios y los datos de NBI.
nbi_munic = left_join(munic, nbi, by=c("MPIO_CCDGO"="CODIGO"))
nbi_munic %>%
dplyr::select(MUNICIPIO, MPIO_CCDGO, NBI) -> check_nbi_munic
head(check_nbi_munic)
Simple feature collection with 6 features and 3 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -72.12902 ymin: 6.036228 xmax: -69.42756 ymax: 7.104381
geographic CRS: WGS 84
MUNICIPIO MPIO_CCDGO NBI geometry
1 ARAUCA 81001 31.31959 POLYGON ((-70.68038 7.09393...
2 PUERTO RONDÓN 81591 22.77443 POLYGON ((-70.87879 6.62133...
3 CRAVO NORTE 81220 29.61032 POLYGON ((-70.40276 6.64639...
4 ARAUQUITA 81065 41.38370 POLYGON ((-71.58441 7.04298...
5 FORTUL 81300 34.35667 POLYGON ((-71.54473 6.75924...
6 SARAVENA 81736 27.70381 POLYGON ((-71.76224 7.06602...
Tenga en cuenta que Arauquita tiene NBI = 41.383, un valor que se puede comparar con los datos de NBI ordenados obtenidos previamente.
Ahora, reproyectemos los municipios:
nbi_munic_new <- st_transform(nbi_munic, crs = 3116)
Utilizaremos el paquete de cartografía que tiene como objetivo obtener mapas temáticos con la calidad visual de los construidos con un software clásico de cartografía o GIS. Sus funciones son intuitivas para los usuarios y garantizan la compatibilidad con los flujos de trabajo comunes de R.
La biblioteca de cartografía utiliza objetos sf o sp para producir gráficos base. Como la mayoría de los componentes internos del paquete se basan en funcionalidades sf, el formato preferido para los objetos espaciales es sf.
Las funciones getTiles () y tilesLayer () descargan y muestran mosaicos de OpenStreetMap. Tenga cuidado de citar la fuente de los mosaicos de manera adecuada.
propSymbolsLayer () muestra símbolos con áreas proporcionales a una variable cuantitativa (por ejemplo, NBI). Hay varios símbolos disponibles (círculos, cuadrados, barras). El argumento pulgadas se utiliza para personalizar los tamaños de los símbolos.
mun.osm <- getTiles(
x = nbi_munic_new,
type = "OpenStreetMap",
zoom = 8,
cachedir = TRUE,
crop = FALSE
)
Discarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded ellps WGS 84 in CRS definition: +proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs +type=crsDiscarded datum World Geodetic System 1984 in CRS definitionDiscarded datum Unknown based on GRS80 ellipsoid in CRS definition
# set margins
opar <- par(mar = c(0,0,1.2,0))
# plot osm tiles
tilesLayer(x = mun.osm)
# plot municipalities (only borders are plotted)
plot(st_geometry(nbi_munic_new), col = NA, border = "grey", add=TRUE)
# plot NBI
propSymbolsLayer(
x = nbi_munic_new,
var = "NBI",
inches = 0.15,
col = "purple",
legend.pos = "topright",
legend.title.txt = "Total NBI",
legend.frame = T,
legend.style = "e"
)
# layout
layoutLayer(title = " NBI Distribution in Arauca",
sources = "Sources: DANE, 2018\n© OpenStreetMap",
author = " Daniel Cortés ",
frame = TRUE, north = FALSE, tabtitle = TRUE)
# north arrow
north(pos = "topleft")
En los mapas de coropletas, las áreas están sombreadas de acuerdo con la variación de una variable cuantitativa. Se utilizan para representar ratios o índices.
choroLayer () muestra mapas de coropletas. Los argumentos nclass, método y rupturas permiten personalizar la clasificación de las variables.
getBreaks () permite clasificar fuera de la función en sí. Las paletas de colores se definen con col y se puede crear un conjunto de colores con carto.pal (). Consulte también display.carto.all ().
# set margins
opar <- par(mar = c(0,0,1.2,0))
# set figure background color
par(bg="grey90")
# plot municipalities (only the backgroung color is plotted)
plot(st_geometry(nbi_munic_new), col = NA, border = NA, bg = "#aadaff")
# plot NBI
choroLayer(
x = nbi_munic_new,
var = "NBI",
method = "geom",
nclass=5,
col = carto.pal(pal1 = "sand.pal", n1 = 5),
border = "white",
lwd = 0.5,
legend.pos = "topright",
legend.title.txt = "NBI",
add = TRUE
)
# layout
layoutLayer(title = "NBI Distribution in Arauca",
sources = "Source: DANE, 2018",
author = "Daniel Cortés",
frame = TRUE, north = TRUE, tabtitle = TRUE, col="black")
# north arrow
north(pos = "topleft")
La función propSymbolsTypoLayer () crea un mapa de símbolos que son proporcionales a los valores de una primera variable y coloreados para reflejar las modalidades de una segunda variable de calidad. Se utiliza una combinación de argumentos propSymbolsLayer () y typoLayer ().
Primero, necesitamos crear una variable cualitativa. Usemos la función mutate para esta tarea.
nbi_munic_2 <- dplyr::mutate(nbi_munic_new, poverty = ifelse(MISERIA > 9, "Extreme",
ifelse(HACINAMIENTO > 6, "High", "Intermediate")))
Tenga en cuenta que el nuevo atributo se llama pobreza. Su valor depende de los valores umbral definidos por el usuario. Asegúrese de verificar la sintaxis del comando ifelse para comprender qué está sucediendo.
head(nbi_munic_2)
Simple feature collection with 6 features and 21 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: 1215550 ymin: 1161263 xmax: 1515269 ymax: 1278742
projected CRS: MAGNA-SIRGAS / Colombia Bogota zone
DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC MPIO_NAREA
1 81 81001 ARAUCA 1959 5787.9421
2 81 81591 PUERTO RONDÓN Decreto Nal 677 de Abril 13 de 1987 2281.4291
3 81 81220 CRAVO NORTE Decreto Nal 677 de Abril 13 de 1987 5212.6908
4 81 81065 ARAUQUITA Decreto 1447 del 28 de Julio de 1971 3046.8789
5 81 81300 FORTUL Decreto 2926 de 1989 1158.6276
6 81 81736 SARAVENA Decreto Nal 204 de Feb 3 de 1976 945.1354
MPIO_NANO DPTO_CNMBR Shape_Leng Shape_Area COD_DEPTO DEPTO COD_MUN MUNICIPIO NBI
1 2017 ARAUCA 4.668016 0.47162612 81 ARAUCA 001 ARAUCA 31.31959
2 2017 ARAUCA 2.932376 0.18593602 81 ARAUCA 591 PUERTO RONDÓN 22.77443
3 2017 ARAUCA 3.963937 0.42393331 81 ARAUCA 220 CRAVO NORTE 29.61032
4 2017 ARAUCA 3.258765 0.24864660 81 ARAUCA 065 ARAUQUITA 41.38370
5 2017 ARAUCA 2.056433 0.09461063 81 ARAUCA 300 FORTUL 34.35667
6 2017 ARAUCA 1.294126 0.07721413 81 ARAUCA 736 SARAVENA 27.70381
MISERIA VIVIENDA SERVICIOS HACINAMIENTO INASISTENCIA ECONOMIA
1 9.524767 23.55534 2.840414 9.164355 2.342002 5.690207
2 7.406514 12.42461 1.013269 7.696019 4.511460 7.985525
3 8.726674 16.10867 2.661910 8.616905 2.661910 10.592755
4 10.664613 33.61016 2.495926 7.563682 2.824102 8.773692
5 10.451880 24.40497 4.553294 9.060596 2.385880 9.457284
6 7.932591 20.45794 2.582348 7.748957 2.515398 5.866713
geometry poverty
1 POLYGON ((1375506 1277590, ... Extreme
2 POLYGON ((1353901 1225089, ... High
3 POLYGON ((1406614 1228231, ... High
4 POLYGON ((1275536 1271316, ... Extreme
5 POLYGON ((1280090 1239930, ... Extreme
6 POLYGON ((1255857 1273763, ... High
library(sf)
library(cartography)
# set margins
opar <- par(mar = c(0,0,1.2,0))
# Plot the municipalities
plot(st_geometry(nbi_munic_2), col="#f2efe9", border="#b38e43", bg = "#aad3df",
lwd = 0.5)
# Plot symbols with choropleth coloration
propSymbolsTypoLayer(
x = nbi_munic_2,
var = "NBI",
inches = 0.3,
symbols = "square",
border = "white",
lwd = .5,
legend.var.pos = c(1490000, 1280000),
legend.var.title.txt = "NBI",
var2 = "poverty",
legend.var2.values.order = c("Extreme", "High"
),
col = carto.pal(pal1 = "multi.pal", n1 = 3),
legend.var2.pos = c(1490000, 1220000),
legend.var2.title.txt = "Poverty"
)
# layout
layoutLayer(title="NBI Distribution in Arauca",
author = "Daniel Cortés",
sources = "Source: DANE, 2018",
scale = 1, tabtitle = TRUE, frame = TRUE)
# north arrow
north(pos = "topleft")
Intentemos combinar las funciones choroLayer y labelLayer:
library(sf)
library(cartography)
# set margins
opar <- par(mar = c(0,0,1.2,0))
# set figure background color
par(bg="grey25")
# plot municipalities
plot(st_geometry(nbi_munic_2), col = "#e4e9de", border = "darkseagreen4",
bg = "grey75", lwd = 0.5)
# plot NBI
choroLayer(
x = nbi_munic_new,
var = "NBI",
method = "geom",
nclass=5,
col = carto.pal(pal1 = "blue.pal", n1 = 5),
border = "orange",
lwd = 0.5,
legend.pos = "topright",
legend.title.txt = "NBI",
add = TRUE
)
# plot labels
labelLayer(
x = nbi_munic_2,
txt = "MUNICIPIO",
col= "yellow",
cex = 0.4,
font = 4,
halo = TRUE,
bg = "grey25",
r = 0.1,
overlap = FALSE,
show.lines = FALSE
)
# map layout
layoutLayer(
title = "Municipalities of Arauca",
sources = "Source: DANE, 2018",
author = "Daniel Cortés",
frame = TRUE,
north = TRUE,
tabtitle = TRUE,
theme = "taupe.pal"
)
Los mapas de Isopleth se basan en el supuesto de que el fenómeno a representar tiene una distribución continua. Estos mapas utilizan un enfoque de modelado de interacción espacial que tiene como objetivo calcular indicadores basados en valores de stock ponderados por distancia. Permite una representación espacial del fenómeno independiente de la heterogeneidad inicial de la división territorial. smoothLayer () depende en gran medida del paquete SpatialPosition. La función utiliza una capa de puntos marcados y un conjunto de parámetros (una función de interacción espacial y sus parámetros) y muestra una capa de mapa isopleta.
Usemos otro conjunto de datos para hacer un mapa de isopletas. En este caso, subiré datos estadísticos sobre la producción de plátano de 2018 en Arauca. Ya conocemos este conjunto de datos, ya que se usó en un cuaderno anterior para ilustrar uniones basadas en atributos.
crops2018 <- read_excel("./EVA_Araucar1.xlsx")
head(crops2018)
Filtrar filas que representan solo datos de platano:
crops2018 %>%
filter(CULTIVO == "PLATANO") -> platano2018
platano2018$TEMP <- as.character(platano2018$COD_MUN)
platano2018$MPIO_CCDGO <- as.factor(platano2018$TEMP)
Ahora realizamos la union:
platano_munic = left_join(munic, platano2018, by="MPIO_CCDGO")
Verifique la salida:
head(platano_munic)
Simple feature collection with 6 features and 24 fields
geometry type: POLYGON
dimension: XY
bbox: xmin: -72.12902 ymin: 6.036228 xmax: -69.42756 ymax: 7.104381
geographic CRS: WGS 84
DPTO_CCDGO MPIO_CCDGO MPIO_CNMBR MPIO_CRSLC MPIO_NAREA
1 81 81001 ARAUCA 1959 5787.9421
2 81 81591 PUERTO RONDÓN Decreto Nal 677 de Abril 13 de 1987 2281.4291
3 81 81220 CRAVO NORTE Decreto Nal 677 de Abril 13 de 1987 5212.6908
4 81 81065 ARAUQUITA Decreto 1447 del 28 de Julio de 1971 3046.8789
5 81 81300 FORTUL Decreto 2926 de 1989 1158.6276
6 81 81736 SARAVENA Decreto Nal 204 de Feb 3 de 1976 945.1354
MPIO_NANO DPTO_CNMBR Shape_Leng Shape_Area COD_DEP DEPARTAMENTO COD_MUN MUNICIPIO
1 2017 ARAUCA 4.668016 0.47162612 81 ARAUCA 81001 ARAUCA
2 2017 ARAUCA 2.932376 0.18593602 81 ARAUCA 81591 PUERTO RONDON
3 2017 ARAUCA 3.963937 0.42393331 81 ARAUCA 81220 CRAVO NORTE
4 2017 ARAUCA 3.258765 0.24864660 81 ARAUCA 81065 ARAUQUITA
5 2017 ARAUCA 2.056433 0.09461063 81 ARAUCA 81300 FORTUL
6 2017 ARAUCA 1.294126 0.07721413 81 ARAUCA 81736 SARAVENA
GRUPO SUBGRUPO CULTIVO YEAR Area_Siembra Area_Cosecha Produccion
1 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 605 365 8019
2 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 451 236 3071
3 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 139 114 2052
4 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 6666 3646 72920
5 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 3527 2927 58540
6 TUBERCULOS Y PLATANOS PLATANO PLATANO 2018 4105 3805 83710
Rendimiento ESTADO CICLO TEMP geometry
1 22 FRUTO FRESCO PERMANENTE 81001 POLYGON ((-70.68038 7.09393...
2 13 FRUTO FRESCO PERMANENTE 81591 POLYGON ((-70.87879 6.62133...
3 18 FRUTO FRESCO PERMANENTE 81220 POLYGON ((-70.40276 6.64639...
4 20 FRUTO FRESCO PERMANENTE 81065 POLYGON ((-71.58441 7.04298...
5 20 FRUTO FRESCO PERMANENTE 81300 POLYGON ((-71.54473 6.75924...
6 22 FRUTO FRESCO PERMANENTE 81736 POLYGON ((-71.76224 7.06602...
Ahora, reproyectemos los municipios:
rep_platano <- st_transform(platano_munic, crs = 3116)
Hora de realizar el mapa:
# set margins
opar <- par(mar = c(0,0,1.2,0))
# plot municipalities (only the backgroung color is plotted)
plot(st_geometry(rep_platano), col = NA, border = "black", bg = "grey75")
# plot isopleth map
smoothLayer(
x = rep_platano,
var = 'Produccion',
typefct = "exponential",
span = 25000,
beta = 2,
nclass = 10,
col = carto.pal(pal1 = 'orange.pal', n1 = 10),
border = "red",
lwd = 0.1,
mask = rep_platano,
legend.values.rnd = -3,
legend.title.txt = "Production",
legend.pos = "topright",
add=TRUE
)
Discarded datum Unknown based on GRS80 ellipsoid in CRS definitionDiscarded datum Unknown based on GRS80 ellipsoid in CRS definitionDiscarded datum Unknown based on GRS80 ellipsoid in CRS definition
# annotation on the map
text(x = 1220000, y = 1200000, cex = 0.6, adj = 0, font = 3, labels =
"Distance function:\n- type = exponential\n- beta = 2\n- span = 20 km")
# layout
layoutLayer(title = "Distribución",
sources = "Sources: DANE and MADR, 2018",
author = "Daniel Cortés",
frame = FALSE, north = FALSE, tabtitle = TRUE, theme = "green.pal")
# north arrow
north(pos = "topleft")
Produzcamos otro mapa de producción de plátanos en 2018. Esta vez usaremos símbolos proporcionales y mapas de coropletas. La salida se guardará como un archivo .png.
Primero, algunas observaciones: - ** propSymbolsChoroLayer () ** crea un mapa de símbolos que son proporcionales a los valores de una primera variable y coloreados para reflejar la clasificación de una segunda variable. - Se utiliza una combinación de ** propSymbolsLayer () ** y ** choroLayer () ** argumentos.
El siguiente fragmento no muestra un mapa. En su lugar, escribe el mapa con el nombre de archivo platano_2018.png en el directorio de trabajo.
### open the plot
png("C:/Users/danye/OneDrive/Documents/Inf2GMB/platano.png", width = 2048, height = 1526)
# set margins
opar <- par(mar = c(0,0,5,5))
# Plot the municipalities
plot(st_geometry(rep_platano), col="darkseagreen3", border="darkseagreen4",
bg = "white", lwd = 0.6)
# Plot symbols with choropleth coloration
propSymbolsChoroLayer(x = rep_platano, var = "Produccion", var2 = "Rendimiento",
col = carto.pal(pal1 = "green.pal", n1 = 3,
pal2 = "red.pal", n2 = 3),
inches = 0.8, method = "q6",
border = "grey50", lwd = 1,
legend.title.cex = 1.5,
legend.values.cex = 1.0,
legend.var.pos = "right",
legend.var2.pos = "left",
legend.var2.values.rnd = 2,
legend.var2.title.txt = "Rendimiento\n(in Ton/Ha)",
legend.var.title.txt = "Coffe Production in 2018",
legend.var.style = "e")
# plot labels
labelLayer(
x = rep_platano,
txt = "MPIO_CNMBR",
col= "white",
cex = 1.0,
font = 4,
halo = FALSE,
bg = "white",
r = 0.1,
overlap = FALSE,
show.lines = FALSE
)
# layout
layoutLayer(title="Coffee Production & Yield in Antioquia, 2018",
author = "Ivan Lizarazo",
sources = "Sources: MADR & DANE, 2018",
scale = 50, tabtitle = FALSE, frame = TRUE)
# north arrow
north(pos = "topleft")
#
title(main="Coffee Production & Yield in Antioquia, 2018", cex.main=3,
sub= "Source: MADR & DANE, 2018", cex.sub=2)
#
graticule = TRUE
#
par(opar)
### close the plot
dev.off()
null device
1
Una vez que guardamos un mapa, podemos agregarlo a nuestro informe R Markdown usando la sintaxis de Markdown de la siguiente manera:
knitr::include_graphics('./platano.png')
sessionInfo()
R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 18362)
Matrix products: default
locale:
[1] LC_COLLATE=Spanish_Colombia.1252 LC_CTYPE=Spanish_Colombia.1252
[3] LC_MONETARY=Spanish_Colombia.1252 LC_NUMERIC=C
[5] LC_TIME=Spanish_Colombia.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] rgeos_0.5-5 readxl_1.3.1 forcats_0.5.0 stringr_1.4.0
[5] dplyr_1.0.2 purrr_0.3.4 readr_1.3.1 tidyr_1.1.2
[9] tibble_3.0.3 ggplot2_3.3.2 tidyverse_1.3.0 SpatialPosition_2.0.1
[13] cartography_2.4.2 sf_0.9-5 raster_3.3-13 sp_1.4-2
loaded via a namespace (and not attached):
[1] Rcpp_1.0.5 lubridate_1.7.9 lattice_0.20-41 png_0.1-7
[5] class_7.3-17 assertthat_0.2.1 digest_0.6.25 cellranger_1.1.0
[9] R6_2.4.1 backports_1.1.7 reprex_0.3.0 evaluate_0.14
[13] e1071_1.7-3 httr_1.4.2 pillar_1.4.6 rlang_0.4.7
[17] rstudioapi_0.11 blob_1.2.1 rmarkdown_2.3 rgdal_1.5-18
[21] munsell_0.5.0 tinytex_0.25 broom_0.7.0 modelr_0.1.8
[25] compiler_4.0.2 xfun_0.16 pkgconfig_2.0.3 base64enc_0.1-3
[29] htmltools_0.5.0 tidyselect_1.1.0 codetools_0.2-16 fansi_0.4.1
[33] withr_2.2.0 crayon_1.3.4 dbplyr_1.4.4 grid_4.0.2
[37] jsonlite_1.7.0 lwgeom_0.2-5 gtable_0.3.0 lifecycle_0.2.0
[41] DBI_1.1.0 magrittr_1.5 units_0.6-7 scales_1.1.1
[45] KernSmooth_2.23-17 cli_2.0.2 stringi_1.4.6 fs_1.5.0
[49] xml2_1.3.2 ellipsis_0.3.1 generics_0.0.2 vctrs_0.3.3
[53] tools_4.0.2 glue_1.4.2 hms_0.5.3 slippymath_0.3.1
[57] rsconnect_0.8.16 yaml_2.2.1 colorspace_1.4-1 rvest_0.3.6
[61] classInt_0.4-3 isoband_0.2.2 knitr_1.29 haven_2.3.1