Joy Division en Pancrudo!!

aRt

El título es un poco exagerado. Ojala!! Ojala, porque eso significaría que Ian Curtis estaría vivo y que el Gaire se ha hecho muy grande y famoso. Lo que hago en el post, bueno haré, es un gráfico parecido al de la mítica portada de Unknown Pleasures de los Joy Division usando los datos de elevación de mi pueblo, Pancrudo. Todo ello gracias a Daniel Redondo que hizo lo mismo pero para la provincia de Granada.

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

Al lío. Rápido-rápido.

Intro

Resulta que hace tiempo vi este post de Daniel Redondo en el que se hacia un Joy Division plot con el relieve de la provincia de Granada. Cuando leí el post, intenté replicarlo, pero no pude/supe bajar los datos de altitud, así que lo deje, pero hace unos días vi el paquete elevatr que hace que sea pan comido el bajar este tipo de datos. Así que … a la segunda va la vencida. Seguro porque ya he hecho el plot.

Quien no sepa de que va el tema, puede echar un vistazo a este post sobre la portada de Unknown Pleasures, el primer disco de Joy Division

Joy Division en Pancrudo, al menos su plot.

Para hacer el mapa se necesita el contorno, o geometría de Pancrudo y los datos de elevación. Ya los tengo del anterior post

El código:
#- hace falta tener la geometría, en este caso de Pancrudo
#- remotes::install_github("rOpenSpain/LAU2boundaries4spain")
municipios <- LAU2boundaries4spain::municipios_2021 
municipios <- pjpv.datos.01::LAU2_muni_2020_canarias
pancrudo_bound <- municipios %>% filter(ine_muni.n == "Pancrudo")

#- 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),] 

Una vez tenemos los datos de elevación sólo hay que seguir al pie de la letra el post de Daniel. Muchas gracias Daniel!!

La primera aproximación no queda muy-muy chula, así que no la muestro.

El código:
#- ahora el Joy Division plot: https://danielredondo.com/posts/20200125_joy_division/
library(ggplot2)
library(ggridges)
library(mapproj)

# Primera aproximación
ggplot(elevation_data, aes(x = x, y = y, group = y, height = elevation)) +
  geom_density_ridges(stat = "identity", scale = 70)

Plot final de Daniel


Pero el final plot de Daniel es muy-muy chulo. Por decir que he cambiado algo, voy a hacerlo en verde. 😜

El código:
#- final plot de Daniel
p <- ggplot(elevation_data, aes(x = x, y = y, group = y, height = elevation)) +
  geom_density_ridges(stat = "identity", scale = 30,
                      fill = "black", color = "green") +
  scale_x_continuous(name = NULL) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_rect(fill = "black"),
        axis.line = element_blank(),
        axis.text.x = element_blank(),
        plot.background = element_rect(fill = "black"),
        axis.ticks.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        axis.title.x = element_text(colour = "white", size = 18)) +
  coord_map()
p

ggsave(p, filename = here::here("imagenes", "joy_division_Pancrudo_01.png"),
       device = "png", width = 12, height = 10, units = "cm")

Y yo le pongo un marco

He intentado hacer alguna cosa más como poner alguna linea de otro color, situar a Pancrudo, pero todo muy rápido. Ya jugaré más con el plot algún día si me decido a hacer las camisetas. Creo que sí, mis hijos quieren una.

Al final me quedo con este plot:

Para acabar, el código todo junto:

El código:
#- R script para hacer el flower post de 11 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
#- remotes::install_github("rOpenSpain/LAU2boundaries4spain")
municipios <- LAU2boundaries4spain::municipios_2021 
municipios <- pjpv.datos.01::LAU2_muni_2020_canarias
pancrudo_bound <- municipios %>% filter(ine_muni.n == "Pancrudo")

#- 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),] 

#- ahora el Joy Division plot: https://danielredondo.com/posts/20200125_joy_division/
library(ggplot2)
library(ggridges)
library(mapproj)

# Primera aproximación
p0 <- ggplot(elevation_data, aes(x = x, y = y, group = y, height = elevation)) +
  geom_density_ridges(stat = "identity", scale = 70)

ggsave(p0, filename = here::here("imagenes", "joy_division_Pancrudo_00.png"),
       device = "png", width = 10, height = 13, units = "cm")

#- grafico final de Daniel
p <- ggplot(elevation_data, aes(x = x, y = y, group = y, height = elevation)) +
  geom_density_ridges(stat = "identity", scale = 30,
                      fill = "black", color = "orange") +
  scale_x_continuous(name = NULL) +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.background = element_rect(fill = "black"),
        axis.line = element_blank(),
        axis.text.x = element_blank(),
        plot.background = element_rect(fill = "black"),
        axis.ticks.x = element_blank(),
        axis.title.y = element_blank(),
        axis.text.y = element_blank(),
        axis.ticks.y = element_blank(),
        axis.title.x = element_text(colour = "white", size = 18)) +
  coord_map()
p

ggsave(p, filename = here::here("imagenes", "joy_division_Pancrudo_01.png"),
       device = "png", width = 12, height = 10, units = "cm")


#- intento hacer una linea en verde
elevation_verde <- elevation_data %>% filter(near(y, 40.79164, tol = 0.000081))
p + geom_density_ridges(data = elevation_verde, aes(x = x, y = y, group = y, height = elevation), stat = "identity", scale = 30, fill = "black", color = "white")


#- intento de ponerle un marco GOOD -------------------
#pancrudo_xx <- pancrudo_bound %>% sf::st_set_geometry(NULL)
p2 <- p + coord_sf(xlim = c(-1.095, -0.933), ylim = c(40.73, 40.91), expand = FALSE) +
  theme(plot.margin = unit(c(0.25, 0.25, 0.25, 0.25), "cm")) +
  #geom_point(data = pancrudo_bound, aes(x = X, y = Y), color = "white", fill = NA, shape = 15, size = 2) +
  theme(plot.background = element_rect(colour = "snow2", size = 10.7)) +
  geom_text(data = data.frame(x = -0.987, y = 40.736, label = "Pancrudo, Teruel"),
            mapping = aes(x = x, y = y, label = label),
            size = 5.2, hjust = 0, vjust = 0, 
            colour = "orange", inherit.aes = FALSE) 

p2

ggsave(p2, filename = here::here("imagenes", "joy_division_Pancrudo_02_naranja_x.png"),
       device = "png", width = 15, height = 20, units = "cm")

FIN

PD: Me quedo con las ganas de replicar otro post de Daniel, este. De hecho lo he probado y salía, solo que a la hora de poner los hexstickers en los hexágonos me quedaba sin memoria, yo no, el PC. Tengo el código en el fichero .R del post anterior, el de el mapa con las elevaciones de Pancrudo (no à la Joy Division).

PD: Acabo de ver este post

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 13). Pedro J. Pérez: Joy Division en Pancrudo!!. Retrieved from https://perezp44.github.io/pjperez.web/flowers/2021-04-13-joy-division-en-pancrudo/

BibTeX citation

@misc{pérez2021joy,
  author = {Pérez, Pedro J.},
  title = {Pedro J. Pérez: Joy Division en Pancrudo!!},
  url = {https://perezp44.github.io/pjperez.web/flowers/2021-04-13-joy-division-en-pancrudo/},
  year = {2021}
}