Mapa con las elevaciones de Pancrudo

maps

El objetivo es hacer uno o varios mapas con datos de elevación del terreno. Seguramente haré uno para Pancrudo y alguno más. Al final he situado en el mapa las fuentes y los montes de Pancrudo. Casi nada!! Ahora si que me los aprendo!

Pedro J. Pérez (Universitat de València)
2021-04-10

Intro

Voy a hacer unos mapas con datos de elevación del terreno. ¿Que por qué? Pues resulta que no se muy bien cómo, llegué a esta web donde explican cómo descargar datos de elevación del terreno usando el paquete de R elevatr. He probado un poco con el paquete y me ha salido a la primera, todo muy fácil, así que, aquí estoy redactando el post. Además, recuerdo que hace tiempo vi un post con datos de elevación de la provincia de Granada en el que se hacía un gráfico parecido a la portada de Unknown Pleasures, el primer disco de Joy Division e intenté replicarlo pero no conseguí bajarme datos de elevación, tampoco lo intente massa, pero ahora ya tengo los datos de elevación, así que a ver si me sale o encuentro el post, que no quiero calentarme mucho el cap. Si consigo hacer un plot replicando la portada de Joy Division, añadiré al post la categoría de aRt. Acabo de encontrar el post, es de Daniel Redondo: Mapas estilo Joy Division con QGIS y R. No confío mucho en que me salga, no quiero perder massa temps, pero como me salga hago camisetas per tutti.

Datos de elevación

La página rspatialdata da acceso a distintos tipos de datos espaciales: temperatura, lluvia, … Concretamente, los datos de elevación son accesibles desde R con el paquete elevatr. En está página se explica de donde proceden los datos y cómo hacer uso de ellos. Es muy fácil!!

Para descargar los datos de elevación hace falta tener la geometría del país/región que te interesa. Yo voy a usar datos del paquete LAU2boundaries4Spain, para algo lo he hecho yo, pero el análisis en el que me baso usa el paquete rgeoboundaries.

Por ejemplo, para descargar datos de elevación de mi pueblo, Pancrudo, he de:

El código:
#- hace falta tener la geometría, en este caso de Pancrudo
#- remotes::install_github("rOpenSpain/LAU2boundaries4spain")
municipios <- pjpv.datos.01::LAU2_muni_2020_canarias
pancrudo_bound <- municipios %>% filter(ine_muni.n == "Pancrudo")
aa <- sf::st_touches(pancrudo_bound, municipios)[[1]]
pancrudo_vecinos <- municipios %>% slice(aa)
#- bajamos datos de elevación (Pancrudo) -----------------
elevation_data <- elevatr::get_elev_raster(locations = pancrudo_bound, z = 9, clip = "locations")
#- convertimos en data.frame y arreglamos
elevation_data <- as.data.frame(elevation_data, xy = TRUE)
colnames(elevation_data)[3] = "elevation"
#- quitamos NA's
elevation_data <- elevation_data[complete.cases(elevation_data),] 

Haciendo el plot

Ya tenemos todo lo necesario para hacer el plot, así que:

El código:
#- el plot (sin vecinos) ------------------
p <- ggplot() +
  #geom_sf(data = pancrudo_vecinos, color = "grey", fill = NA) +
  #geom_label(data = pancrudo_vecinos, color = "grey", fill = NA) +
  geom_raster(data = elevation_data, aes(x = x, y = y, fill = elevation)) +
  geom_sf(data = pancrudo_bound, color = "black", fill = NA) +
  coord_sf() +
  #scale_fill_gradient(colours = terrain.colors(10)) +
  scale_fill_gradient(low = "white", high = "brown") +
  #scale_fill_gradient(low = "grey90", high = "black") +
  #scale_fill_viridis_c(direction = -1, guide = guide_legend(direction = "horizontal")) +
  ggtitle("Relieve de Pancrudo") + 
  pjpv2020.01::theme_pjp_maps() +
  ggplot2::theme(legend.position = c(0.1, 0.75)) +
  ggplot2::theme(legend.background = 
                   ggplot2::element_rect(fill = NA , color = NA)) +
  labs(caption = "Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444") +
  theme(plot.caption = element_text(size = 7))
p
ggsave(p, filename = here::here("imagenes", "relieve_elevacion_Pancrudo.png"),
       device = "png", width = 10, height = 13, units = "cm")
#- OK, conseguido. A ver si puedo mejorarlo algo!!!
#- primero simplement cambiar el color y ...
#- whit tinter pkg: https://github.com/sebdalgarno/tinter
library(tinter)
hex <- "#335CAC"
tinter(hex, steps = 10, crop = 7)
p_blue <- p +  scale_fill_gradientn(colours = tinter(hex, steps = 10)) +
  theme(legend.position ="bottom")
ggsave(p_blue, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_blue.png"),
       device = "png", width = 10, height = 13, units = "cm")
library(patchwork)
p_mas_blue <- p + p_blue
ggsave(p_mas_blue, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_2.png"),
       device = "png", width = 20, height = 15, units = "cm")


Hay algunos fallitos, pero como dice mi hijo, pues ya estaría.

Variaciones/mejorando el plot

La verdad es que ya que me he puesto, voy a hacer varias cosas que me apetecen:

Municipios vecinos de Pancrudo

Municipios que no pueblos, porque el pueblo más cercano a Pancrudo es Cervera del Rincón, pero los 2 pueblos pertenecen al municipio de Pancrudo. El proceso es muy-muy parecido. Los datos de altitud del relieve proceden del paquete elevatr, mientras que la geolocalización y datos de altitud de los municipios proceden del Nomenclátor Geográfico de Municipios y Entidades de Población.

El código:
#- el plot (con vecinos) --------------
p_vecinos <- ggplot() +
  #- datos de elevación del terreno
  geom_raster(data = elevation_data_vecinos, aes(x = x, y = y, fill = elevation)) +
  #- geometrias de los municipios vecinos
  geom_sf(data = pancrudo_vecinos, color = "grey5", fill = NA) +
  #- los municipios vecinos
  geom_point(data = pancrudo_vecinos, aes(x = X, y = Y), color = "grey5", fill = NA) +
  geom_text(data = pancrudo_vecinos, 
            aes(x = X, y = Y-0.009, label = glue::glue("{ine_muni.n}\n({ALTITUD})")),
            color = "grey5", fontface = "bold",  check_overlap = TRUE, size = 2.2) +
  #- datos de elevacion de Pancrudo
  geom_raster(data = elevation_data, aes(x = x, y = y, fill = elevation)) +
  #- geometria de Pancrudo
  geom_sf(data = pancrudo_bound, color = "black", fill = NA, size = 0.8) +
  #- municipio de Pancrudo
  geom_point(data = pancrudo_bound, aes(x = X, y = Y), color = "darkgreen", fill = NA, shape = 15, size = 2) +
  geom_text(data = pancrudo_bound, 
            aes(x = X+0.007, y = Y-0.01, label = glue::glue("{ine_muni.n}\n(1233)")),
            color = "darkgreen", fontface = "bold",  check_overlap = TRUE, size = 3.1) +
  coord_sf() +
  #- pruebo varias escalas
  #scale_fill_gradient(colours = terrain.colors(10)) +
  scale_fill_gradient(low = "white", high = "brown") +
  #scale_fill_gradient(low = "grey90", high = "black") +
  #scale_fill_viridis_c(direction = -1, guide = guide_legend(direction = "horizontal")) +
  ggtitle("Relieve de Pancrudo (y vecinos)") + 
  pjpv2020.01::theme_pjp_maps() +
  ggplot2::theme(legend.position = c(0.07, 0.82)) +
  ggplot2::theme(legend.background = 
                   ggplot2::element_rect(fill = NA , color = NA)) +
  labs(caption = "Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444") +
  theme(plot.caption = element_text(size = 7))
p_vecinos
ggsave(p_vecinos, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_vecinos.png"),
       device = "png", width = 18, height = 14, units = "cm")

Bueno, como veis, casi toda la zona está por encima de 1000 metros. Rillo es el pueblo que más alto está, nos ganan por un poquito!!!


Pueblos del municipio de Pancrudo

El municipio de Pancrudo tiene 4 pueblos y quiero situar a los cuatro en el mapa. Podría usar datos del IGN de Entidades, pero prefiero geolocalizar. ¿Para que ir andando si se puede ir a rastras?1 Vamos allá.

Para geolocalizar uso el paquete tidygeocoder:

El código:
#- voy a geolocalizar ----------
pueblos <- tibble::tibble(
  pueblo = c("Cervera del Rincón" ,   "Cuevas de Portalrubio", "Pancrudo","Portalrubio"  ),
  provincia = "Teruel",
  pais = "Spain")
pueblos <- pueblos %>% mutate(text_to_geocode = paste(pueblo, provincia, pais, sep = ", "))
# now geocode -----
library(tidygeocoder)
pueblos <- pueblos %>% tidygeocoder::geocode(text_to_geocode, method = "osm") %>% dplyr::select(- text_to_geocode)
# convert coordinates to an sf object
#pueblos <- pueblos %>% sf::st_as_sf(coords = c("long", "lat"), crs = 4326)

Ya que me pongo, voy a situar también en el mapa los montes y las fuentes de Pancrudo. A ver si ya me aprendo sus nombres y donde están!! Los datos de los montes y fuentes proceden del Nomenclátor Geográfico Básico de España.

Para hacer el mapa final que muestro, he hecho un mapa para los montes, otro para las fuentes y los he unido con pactwork después he creado el título y la caption con el paquete cowplot.

El código:
#- situo los 4 pueblos como puntos
pp <- p + geom_point(data = pueblos, aes(x = long, y = lat), shape = 15, color = "darkgreen", size = 2.5) + 
  #geom_point(data = pueblos1, aes(x = LONGITUD_ETRS89, y = LATITUD_ETRS89), color = "purple") + 
  #ggrepel::geom_label_repel(data = pueblos, aes(x = long, y = lat, label = pueblo)) +
  geom_text(data = pueblos, 
           aes(x = long, y = lat+0.003, label = pueblo),
           color = "darkgreen", fontface = "bold",  check_overlap = TRUE, size = 3.1) 
pp
#- meto los accidentes geograficos de Pancrudo (nomenclator geografico del IGN)
accidentes <- rio::import("/home/pjpv/Escritorio/my_datos_2021/datos/IGN/pancrudo_IGN_nomenclator_geografico.rds")
tipos_acc <- accidentes %>% distinct(codigo_ngbe, codigo_ngbe_text)
accidentes_montes <- accidentes %>% filter(codigo_ngbe %in% c("4.1.3", "4.1.2"))
accidentes_fuentes <- accidentes %>% filter(codigo_ngbe %in% c("5.5"))
accidentes_vertices <- accidentes %>% filter(codigo_ngbe %in% c("2.3.1"))
janitor::tabyl(accidentes, codigo_ngbe_text )
pp_montes <- pp + 
  geom_point(data = accidentes_montes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "black", shape = 17) +
  geom_point(data = accidentes_vertices, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "black", shape = 8) +
  geom_text(data = accidentes_vertices, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95+0.003, label = identificador_geografico),
            color = "black", check_overlap = TRUE, size = 3) +
  geom_text(data = accidentes_montes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95-0.002, label = identificador_geografico),
            color = "black", check_overlap = TRUE, size = 2.5) +
  labs(title = "Montes de Pancrudo",
       caption = "") +
  theme(legend.position = "none") +
  theme(plot.title = element_text(color = "saddlebrown"))+
    theme(plot.title = element_text(hjust = 0.5))     # Center ggplot title
  
pp_fuentes <- pp + 
  geom_point(data = accidentes_fuentes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "navyblue") +
  geom_text(data = accidentes_fuentes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95-0.002, label = identificador_geografico),
       color = "navyblue", check_overlap = TRUE, size = 2.5) +
  labs(title = "Fuentes de Pancrudo", caption = "") +
  theme(plot.title = element_text(color = "midnightblue"))+
  theme(plot.title = element_text(hjust = 0.5))     # Center ggplot title
#- OK voy a juntar pp_fuentes y pp_montes en un gráfico con patch y luego le voy a añadir label y caption con cowplot
library(patchwork)
ppp <- pp_montes + pp_fuentes
ppp
library(cowplot)
title <- ggdraw() +
  draw_label("Relieve del municipio de Pancrudo",
             fontfamily = "DejaVu Serif Condensed",
             #colour = "lightpink4",
             hjust = 0.5, size = 24)
caption <- ggdraw() +
  draw_label("\n Datos de montes y fuentes del IGN | Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444",
             #fontfamily = "DejaVu Serif Condensed",
             #colour = "lightpink4",
             hjust = 0.5,
             size = 8) 
pppp <- plot_grid(title,
               #plot_grid(ppp, nrow = 1, rel_widths = c(0.5, 0.5)),
               ppp,
               caption,
               ncol = 1,
               rel_heights = c(0.15, 0.754, 0.06))
pppp
#- no consigo quitar el marco blanco ???
zz <- pppp + pjpv2020.01::theme_pjp_maps()
  
zz  + theme(panel.background = ggplot2::element_rect(fill = "#f5f5f2", color = "#f5f5f2"),
                   plot.background = ggplot2::element_rect(fill = "#f5f5f2", color = NA),
                   panel.border = ggplot2::element_rect(fill = "#f5f5f2", color = NA))
zz
ggsave(zz, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_fuentes.png"),
       device = "png", width = 24, height = 17, units = "cm")
knitr::plot_crop(here::here("imagenes", "relieve_elevacion_Pancrudo_fuentes.png"))

No he conseguido quitar el marco blanco pero, ahora sí que ya estaría. El objetivo era hacer un plot a la Joy Division pero me he liado. Lo voy a hacer en el siguiente post que lo voy a hacer rápido-rápido

Para acabar, el código todo junto:

El código:
#- R script para hacer el flower post de 10 de Abril de 2021
#- voy a usar datos de elevación de aqui: https://rspatialdata.github.io/elevation.html
library(tidyverse)
library(raster)
library(elevatr)
library(sf)
library(viridis)
#library(rgeoboundaries) #- remotes::install_gitlab("dickoa/rgeoboundaries")
#swiss_bound <- geoboundaries("Switzerland")
#- aa <- rgeoboundaries::gb_adm0("Spain")
#- hace falta tener la geometría, en este caso de Pancrudo
municipios <- pjpv.datos.01::LAU2_muni_2020_canarias
pancrudo_bound <- municipios %>% filter(ine_muni.n == "Pancrudo")
aa <- sf::st_touches(pancrudo_bound, municipios)[[1]]
pancrudo_vecinos <- municipios %>% slice(aa)
#- bajamos datos de elevación (Pancrudo) -----------------
elevation_data <- elevatr::get_elev_raster(locations = pancrudo_bound, z = 9, clip = "locations")
#- convertimos en data.frame y arreglamos
elevation_data <- as.data.frame(elevation_data, xy = TRUE)
colnames(elevation_data)[3] = "elevation"
#- quitamos NA's
elevation_data <- elevation_data[complete.cases(elevation_data),] 
#- el plot (sin vecinos) ------------------
p <- ggplot() +
  #geom_sf(data = pancrudo_vecinos, color = "grey", fill = NA) +
  #geom_label(data = pancrudo_vecinos, color = "grey", fill = NA) +
  geom_raster(data = elevation_data, aes(x = x, y = y, fill = elevation)) +
  geom_sf(data = pancrudo_bound, color = "black", fill = NA) +
  coord_sf() +
  #scale_fill_gradient(colours = terrain.colors(10)) +
  scale_fill_gradient(low = "white", high = "brown") +
  #scale_fill_gradient(low = "grey90", high = "black") +
  #scale_fill_viridis_c(direction = -1, guide = guide_legend(direction = "horizontal")) +
  ggtitle("Relieve de Pancrudo") + 
  pjpv2020.01::theme_pjp_maps() +
  ggplot2::theme(legend.position = c(0.1, 0.75)) +
  ggplot2::theme(legend.background = 
                   ggplot2::element_rect(fill = NA , color = NA)) +
  labs(caption = "Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444") +
  theme(plot.caption = element_text(size = 7))
p
ggsave(p, filename = here::here("imagenes", "relieve_elevacion_Pancrudo.png"),
       device = "png", width = 10, height = 13, units = "cm")
#- OK, conseguido. A ver si puedo mejorarlo algo!!!
#- primero simplement cambiar el color y ...
#- whit tinter pkg: https://github.com/sebdalgarno/tinter
library(tinter)
hex <- "#335CAC"
tinter(hex, steps = 10, crop = 7)
p_blue <- p +  scale_fill_gradientn(colours = tinter(hex, steps = 10)) +
  theme(legend.position ="bottom")
ggsave(p_blue, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_blue.png"),
       device = "png", width = 10, height = 13, units = "cm")
library(patchwork)
p_mas_blue <- p + p_blue
ggsave(p_mas_blue, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_2.png"),
       device = "png", width = 20, height = 15, units = "cm")
#- Pueblos vecinos --------------------------
#- bajamos datos de elevación (vecinos Pancrudo) 
elevation_data_vecinos <- elevatr::get_elev_raster(locations = pancrudo_vecinos, z = 9, clip = "locations")
#- convertimos en data.frame y arreglamos
elevation_data_vecinos <- as.data.frame(elevation_data_vecinos, xy = TRUE)
colnames(elevation_data_vecinos)[3] = "elevation"
#- quitamos NA's
elevation_data_vecinos <- elevation_data_vecinos[complete.cases(elevation_data_vecinos),] 
#- altitud de los vecinos (segun IGN)
pueblos_ign <- rio::import("/home/pjpv/Escritorio/my_datos_2021/datos/codigos/IGN_municipios.xlsx") %>% dplyr::select(ine_muni, ine_muni.n, ALTITUD, ine_prov.n)
names(pueblos_ign)
pancrudo_vecinos <- left_join(pancrudo_vecinos, pueblos_ign) %>% dplyr::select(ine_muni, ine_muni.n, ALTITUD, ine_prov.n, X, Y)
pancrudo_vecinos <- pancrudo_vecinos %>% mutate(textito = glue::glue("{ine_muni.n}\n({ALTITUD})"))
#- el plot (con vecinos) --------------
p_vecinos <- ggplot() +
  #- datos de elevación del terreno
  geom_raster(data = elevation_data_vecinos, aes(x = x, y = y, fill = elevation)) +
  #- geometrias de los municipios vecinos
  geom_sf(data = pancrudo_vecinos, color = "grey5", fill = NA) +
  #- los municipios vecinos
  geom_point(data = pancrudo_vecinos, aes(x = X, y = Y), color = "grey5", fill = NA) +
  geom_text(data = pancrudo_vecinos, 
            aes(x = X, y = Y-0.009, label = glue::glue("{ine_muni.n}\n({ALTITUD})")),
            color = "grey5", fontface = "bold",  check_overlap = TRUE, size = 2.2) +
  #- datos de elevacion de Pancrudo
  geom_raster(data = elevation_data, aes(x = x, y = y, fill = elevation)) +
  #- geometria de Pancrudo
  geom_sf(data = pancrudo_bound, color = "black", fill = NA, size = 0.8) +
  #- municipio de Pancrudo
  geom_point(data = pancrudo_bound, aes(x = X, y = Y), color = "darkgreen", fill = NA, shape = 15, size = 2) +
  geom_text(data = pancrudo_bound, 
            aes(x = X+0.007, y = Y-0.01, label = glue::glue("{ine_muni.n}\n(1233)")),
            color = "darkgreen", fontface = "bold",  check_overlap = TRUE, size = 3.1) +
  coord_sf() +
  #- pruebo varias escalas
  #scale_fill_gradient(colours = terrain.colors(10)) +
  scale_fill_gradient(low = "white", high = "brown") +
  #scale_fill_gradient(low = "grey90", high = "black") +
  #scale_fill_viridis_c(direction = -1, guide = guide_legend(direction = "horizontal")) +
  ggtitle("Relieve de Pancrudo (y vecinos)") + 
  pjpv2020.01::theme_pjp_maps() +
  ggplot2::theme(legend.position = c(0.07, 0.82)) +
  ggplot2::theme(legend.background = 
                   ggplot2::element_rect(fill = NA , color = NA)) +
  labs(caption = "Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444") +
  theme(plot.caption = element_text(size = 7))
p_vecinos
ggsave(p_vecinos, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_vecinos.png"),
       device = "png", width = 18, height = 14, units = "cm")
#- Poner los 4 pueblos de Pancrudo -----------------
pueblos1 <- rio::import("/home/pjpv/Escritorio/my_datos_2021/datos/codigos/IGN_municipios.xlsx") %>% filter(stringr::str_detect(COD_INE_CAPITAL, "^44177"))
p + geom_point(data = pueblos1, aes(x = LONGITUD_ETRS89, y = LATITUD_ETRS89))
names(pueblos1)
#- voy a geolocalizar ----------
pueblos <- tibble::tibble(
  pueblo = c("Cervera del Rincón" ,   "Cuevas de Portalrubio", "Pancrudo","Portalrubio"  ),
  provincia = "Teruel",
  pais = "Spain")
pueblos <- pueblos %>% mutate(text_to_geocode = paste(pueblo, provincia, pais, sep = ", "))
# now geocode -----
library(tidygeocoder)
pueblos <- pueblos %>% tidygeocoder::geocode(text_to_geocode, method = "osm") %>% dplyr::select(- text_to_geocode)
# convert coordinates to an sf object
#pueblos <- pueblos %>% sf::st_as_sf(coords = c("long", "lat"), crs = 4326)
#- situo los 4 pueblos como puntos
pp <- p + geom_point(data = pueblos, aes(x = long, y = lat), shape = 15, color = "darkgreen", size = 2.5) + 
  #geom_point(data = pueblos1, aes(x = LONGITUD_ETRS89, y = LATITUD_ETRS89), color = "purple") + 
  #ggrepel::geom_label_repel(data = pueblos, aes(x = long, y = lat, label = pueblo)) +
  geom_text(data = pueblos, 
           aes(x = long, y = lat+0.003, label = pueblo),
           color = "darkgreen", fontface = "bold",  check_overlap = TRUE, size = 3.1) 
pp
#- meto los accidentes geograficos de Pancrudo (nomenclator geografico del IGN)
accidentes <- rio::import("/home/pjpv/Escritorio/my_datos_2021/datos/IGN/pancrudo_IGN_nomenclator_geografico.rds")
tipos_acc <- accidentes %>% distinct(codigo_ngbe, codigo_ngbe_text)
accidentes_montes <- accidentes %>% filter(codigo_ngbe %in% c("4.1.3", "4.1.2"))
accidentes_fuentes <- accidentes %>% filter(codigo_ngbe %in% c("5.5"))
accidentes_vertices <- accidentes %>% filter(codigo_ngbe %in% c("2.3.1"))
janitor::tabyl(accidentes, codigo_ngbe_text )
pp_montes <- pp + 
  geom_point(data = accidentes_montes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "black", shape = 17) +
  geom_point(data = accidentes_vertices, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "black", shape = 8) +
  geom_text(data = accidentes_vertices, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95+0.003, label = identificador_geografico),
            color = "black", check_overlap = TRUE, size = 3) +
  geom_text(data = accidentes_montes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95-0.002, label = identificador_geografico),
            color = "black", check_overlap = TRUE, size = 2.5) +
  labs(title = "Montes de Pancrudo",
       caption = "") +
  theme(legend.position = "none") +
  theme(plot.title = element_text(color = "saddlebrown"))+
    theme(plot.title = element_text(hjust = 0.5))     # Center ggplot title
  
  
pp_fuentes <- pp + 
  geom_point(data = accidentes_fuentes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95), color = "navyblue") +
  geom_text(data = accidentes_fuentes, aes(x = long_etrs89_regcan95, y = lat_etrs89_regcan95-0.002, label = identificador_geografico),
       color = "navyblue", check_overlap = TRUE, size = 2.5) +
  labs(title = "Fuentes de Pancrudo", caption = "") +
  theme(plot.title = element_text(color = "midnightblue"))+
  theme(plot.title = element_text(hjust = 0.5))     # Center ggplot title
#- OK voy a juntar pp_fuentes y pp_montes en un gráfico con patch y luego le voy a añadir label y caption con cowplot
library(patchwork)
ppp <- pp_montes + pp_fuentes 
library(cowplot)
title <- ggdraw() +
  draw_label("Relieve del municipio de Pancrudo",
             fontfamily = "DejaVu Serif Condensed",
             #colour = "lightpink4",
             hjust = 0.5, size = 22)
caption <- ggdraw() +
  draw_label("\n Datos de montes y fuentes del IGN | Datos de elevación del paquete elevatr\n Geometrías del paquete LAU2boundaries4spain | Visualización: @pjpv4444",
             #fontfamily = "DejaVu Serif Condensed",
             #colour = "lightpink4",
             hjust = 0.5,
             size = 8) 
#-juntos el plot, el label y la caption
pppp <- plot_grid(title,
               #plot_grid(ppp, nrow = 1, rel_widths = c(0.5, 0.5)),
               ppp,
               caption,
               ncol = 1,
               rel_heights = c(0.15, 0.754, 0.06))
pppp
#- no consigo quitar el trozo blanco
zz <- pppp + pjpv2020.01::theme_pjp_maps()
zz  + theme(panel.background = ggplot2::element_rect(fill = "#f5f5f2", color = "#f5f5f2"),
            plot.background = ggplot2::element_rect(fill = "#f5f5f2", color = NA),
            panel.border = ggplot2::element_rect(fill = "#f5f5f2", color = NA))
zz
ggsave(zz, filename = here::here("imagenes", "relieve_elevacion_Pancrudo_fuentes.png"),
       device = "png", width = 24, height = 17, units = "cm")
#knitr::plot_crop(here::here("imagenes", "relieve_elevacion_Pancrudo_fuentes.png"))

FIN


  1. Al final en lugar de a rastras he ido para atrás: lo he hecho de las 2 maneras.↩︎

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY 4.0. Source code is available at https://github.com/perezp44/pjperez.web, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".

Citation

For attribution, please cite this work as

Pérez (2021, April 10). Pedro J. Pérez: Mapa con las elevaciones de Pancrudo. Retrieved from https://perezp44.github.io/pjperez.web/flowers/2021-04-10-mapa-con-elevacin-de-pancrudo/

BibTeX citation

@misc{pérez2021mapa,
  author = {Pérez, Pedro J.},
  title = {Pedro J. Pérez: Mapa con las elevaciones de Pancrudo},
  url = {https://perezp44.github.io/pjperez.web/flowers/2021-04-10-mapa-con-elevacin-de-pancrudo/},
  year = {2021}
}