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 tipo sf o sfc.
  • 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 defecto sf.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 argumento style de classIntervals (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étodo st_bbox() para definir los límites (sustituyendo a xlim e ylim).
  • axes: lógico; TRUE para dibujar los ejes.
  • graticule: lógico, objeto de clase crs (st_crs()) u objeto creado por st_graticule; TRUE representará la gratícula st_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 establecer reset = FALSE para continuar añadiendo elementos, con add = TRUE (para restaurarlos hay que ejecutar dev.off()) (ver figuras: 2.1, 2.8).
  • ...: otros parámetros gráficos (ver ?plot.default y ?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) 
Ejemplo de gráfico con múltiples atributos (con colores personalizados y leyenda común, en escala logarítmica personalizada).

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")
Ejemplo de mapa estático creado con `tmap`.

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 bookdown

Para 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 bookdown

Para más información ver las viñetas del paquete.