Un cartograma es un tipo de mapa donde diferentes áreas geográficas son modificadas en base a una variable asociada a esas áreas. Aunque los cartogramas pueden ser visualmente atractivos, requieren un conocimiento previo de la geografía representada, ya que los tamaños y los límites de las geografías son alterados.
Usaremos los datos incluidos en el paquete mapSpain
, que proporciona datos de mapas en formato sf
y un conjunto de datos de muestra llamado pobmun19
, que incluye la población de España por municipio en 2019.
En primer lugar, necesitamos obtener los datos espaciales que contienen la información geográfica a ser usada en el gráfico. Usando el paquete mapSpain
podemos seleccionar las provincias, que son el segundo nivel de división administrativa del país, y visualizar el objeto con geom_sf
.
# install.packages("sf")
library(sf)
# install.packages("dplyr")
library(dplyr)
# install.packages("ggplot2")
library(ggplot2)
# install.packages("mapSpain")
library(mapSpain)
# install.packages("cartogram")
library(cartogram)
# Datos
prov <- esp_get_prov() %>%
mutate(name = prov.shortname.en) %>%
select(name, cpro)
# Mapa base
ggplot(prov) +
geom_sf()
Vamos a usar el paquete cartogram
, que es específico para esta tarea. Dado que cartogram
requiere un objeto sf
proyectado, vamos a proyectar nuestro mapa en la conocida proyección Mercator (EPSG code: 3857).
# Cambiar el CRS
prov_3857 <- st_transform(prov, 3857)
ggplot(prov_3857) +
geom_sf()
Para crear un cartograma tendremos que unir los datos estadísticos con los geográficos. Para ello, dado que los objetos sf
se comportan como data frames, podemos usar la función left_join
de dplyr
. Como el conjunto de datos pobmun19
proporciona datos a nivel municipal, primero tenemos que agregarlos a nivel provincial:
# Agregar
pob_provincias <- mapSpain::pobmun19 %>%
group_by(cpro) %>%
summarise(n_pop = sum(pob19))
prov_3857_datos <- prov_3857 %>%
left_join(pob_provincias, by = c("cpro"))
Después de unir los conjuntos de datos tendremos un objeto con los datos de mapSpain::pobmun19
junto con una columna llamada geometry
, que incluye los datos de las coordenadas geográficas.