6 Añadir elementos a la representación las de capas

Se puede representar en una capa el valor de cualquier columna de la tabla de atributos. En particular, vamos a representar mediante etiquetas los nombres de los municipios y, creando un mapa de coropletas, un valor numérico.

6.1 Mostrar etiquetas

Las etiquetas las mostramos a continuación mediante la función text(). A esta función le tenemos que indicar, para cada fila, la posición donde escribir el texto y el campo que contiene el texto a escribir. Para determinar automáticamente las coordenadas, utilizamos la función st_centroid() que devuelve el centroide de la representación de cada municipio; a partir del centoide, mediante la función st_coordinates() se obtienen sus coordenadas. El texto que se representa es el contenido en el campo municipio. Mediante el resto de parámetros se indica la posición relativa del texto respecto a centroide y su tamaño.

seleccion <- "Lanjarón"
municipio_sel <- censo[censo$municipio == seleccion,]

plot(st_geometry(censo), axes = TRUE, main = seleccion)
plot(st_geometry(municipio_sel), col = "lightgreen", add = TRUE)

text(
  st_coordinates(st_centroid(st_geometry(censo))),
  labels = censo$municipio,
  pos = 3,
  cex = 0.5
)

A continuación, se muestra una forma alternativa de obtener un mapa con las etiquetas de los nombres; en este caso, mediante las funciones del paquete tmap. En la primera línea, mediante la función tm_shape(), se indica qué se quiere representar; en las líneas siguientes, se incluyen más detalles o más datos de la representación13. En este caso, no se puede ejecutar línea a línea sino que se ejecuta conjuntamente como un todo.

library(tmap)

tm_shape(censo) +
  tm_fill("white") +
  tm_borders() +
  tm_text("municipio", size = 0.3) +
  tm_shape(municipio_sel) +
  tm_fill("lightgreen") +
  tm_borders(lwd = 2) +
  tm_text("municipio", size = 0.3) +
  tm_layout(
    frame = FALSE,
    title = seleccion,
    title.size = 1,
    title.position = c(0.5, "top")
  )

6.2 Representar información numérica

La función plot() representa directamente información numérica en forma de mapa de coropletas, basta con indicar explícitamente el campo de la tabla de atributos a utilizar en la representación, como se muestra a continuación.

plot(censo[, "Incremento"], main = "Granada")

A continuación, se muestra cómo obtener un resultado similar al anterior pero con el paquete tmap.

tm_shape(censo) +
  tm_fill("Incremento") +
  tm_borders() +
  tm_layout(frame = FALSE, title = "Granada", 
            title.size = 1, title.position = c(0.35, "top"))

  1. Esta es una manera de componer funciones que ofrece el paquete magrittr (https://magrittr.tidyverse.org/).↩︎