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",
extent = x, axes = FALSE,
key.pos, key.length, key.width, graticule = NA_crs_, col_graticule = "grey", border, reset = TRUE)
x
: objeto de tiposf
osfc
.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 argumentostyle
declassIntervals
(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 axlim
eylim
).axes
: lógico;TRUE
para dibujar los ejes.graticule
: lógico, objeto de clasecrs
(st_crs()
) u objeto creado porst_graticule
;TRUE
representará 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 = FALSE
para 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.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)
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")
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.