2.3 Representación de datos espaciales
El paquete sf implementa métodos plot() para la representación de objetos espaciales (ver ?plot.sf).
Estos métodos suelen ser la forma más rápida de generar gráficos básicos (estáticos), pero también se pueden emplear otros paquetes como ggplot2 (Sección 2.2.2), tmap, mapsf, leaflet, mapview, mapdeck o ggmap, para generar mapas más avanzados, incluyendo mapas dinámicos.
Para una introducción a las posibilidades gráficas con el paquete sf se puede consultar la viñeta Plotting Simple Features.
El método plot() es de la forma:
plot(x, ..., max.plot, pal = NULL, nbreaks, breaks = "pretty",
key.pos, key.length, key.width, extent = x, axes = FALSE,
graticule = NA_crs_, col_graticule = "grey", border, reset = TRUE)x: objeto de tiposfosfc.max.plot: número máximo de atributos que se representarán.pal: función que genera la paleta de colores (ver e.g.?rainbow), por defectosf.colors(ver Figura 2.4).nbreaks: número de puntos de corte para la clave de color.breaks: vector de puntos de corte o cadena de texto válida para el argumentostyledeclassIntervals(ver figuras: 2.1, 2.4).key.pos: posición de la leyenda, -1 = automática, 0 = error?, 1 = abajo, 2 = izquierda, 3 = arriba, 4 = derecha, NULL = omitir. Cuando se representan múltiples atributos se añade una única leyenda común únicamente si se establece (ver figuras: 2.4, 2.8).key.length,key.width: dimensiones de la leyenda (proporción de espacio).extent: objeto con métodost_bbox()para definir los límites (sustituyendo axlimeylim).axes: lógico;TRUEpara dibujar los ejes.graticule: lógico, objeto de clasecrs(st_crs()) u objeto creado porst_graticule;TRUErepresentará la gratículast_graticule(x)(ver Figura 2.8).col_graticule: color de la gratícula.border: color de los bordes de polígonos.reset: lógico; si el gráfico contiene una leyenda se modifican los parámetros gráficos y por defecto los restaura (reset = TRUE). Solo en ese caso es necesario establecerreset = FALSEpara continuar añadiendo elementos, conadd = TRUE(para restaurarlos hay que ejecutardev.off()) (ver figuras: 2.1, 2.8)....: otros parámetros gráficos (ver?plot.defaulty?par).
Ejemplo:
library(viridis)
plot(nc[c("SID74", "SID79")], pal = viridis, border = 'grey70', logz = TRUE,
breaks = seq(0, 2, len = 9), at = c(0, 0.5, 1, 1.5, 2),
key.pos = 1, key.width = lcm(1.2), key.length = 0.8)
Figura 2.4: Ejemplo de gráfico con múltiples atributos (con colores personalizados y leyenda común, en escala logarítmica personalizada).
El paquete tmap permite generar mapas temáticos con una gramática similar a la de ggplot2 pero enfocada a mapas.
Por defecto crea mapas estáticos (tmap_mode("plot")):
library(tmap)
tm_shape(nc) + tm_polygons("SID79")
Figura 2.5: Ejemplo de mapa estático creado con tmap.
Aunque puede crear mapas interactivos, en páginas html, utilizando el paquete leaflet (interfaz a la librería JavaScript Leaflet), implementando también leyendas, ventanas emergentes al pulsar con el ratón en las características y soporte para datos rasterizados.
tmap_mode("view")
tmap_last()
# Error en bookdownPara más información ver el capítulo Making maps with R del libro Geocomputation with R, la viñeta del paquete, o el borrador del libro Elegant and informative maps with tmap.
El paquete mapview también permite crear mapas interactivos utilizando el paquete leaflet (con funcionalidades añadidas) o el paquete mapdeck (diseñado para grandes conjuntos de datos espaciales).
library(mapview)
mapview(nc, zcol = "SID79")
# Error en bookdownPara más información ver las viñetas del paquete.