30 días de mapas, mis apuntes


ggplot2 mapas desafíos R python rspatial

Durante noviembre participé en el desafío #30DayMapChallenge a pesar de que al terminar #30díasdegráficos en junio dije ¡que nunca más participaría en este tipo de desafíos! En este post hablaré de mi experiencia haciendo mapas durante todo un mes, dejaré por escrito algunas cosas que no quiero olvidar, recursos que encontré de utilidad y las nuevas cosas que aprendí.

Por qué participar

Porque es una muy buena oportunidad para aprender cosas nuevas y poner en práctica lo que ya sabes. También conoces las herramientas que usan las demás personas y comienzas a seguir a un montón de cuentas nuevas que no estaban en tu radar. También yo lo veo como una experiencia creativa, prefiero hacer un mapa diferente cada día y no repetirme mucho, me gusta usar nuevos colores, probar diferentes posiciones de los elementos, tipos de letras, set de datos, tipos de líneas, animaciones…

También me propongo un “sub-desafío” personal. Cuando hice #30díasdegráficos me estaba preparando para certificarme como instructora de tidyverse y aproveché para hacer la mayor cantidad de gráficos usando tidyverse por sobre Rbase (que es mi lengua materna). Esta vez me propuse hacer sólo mapas con código, así que usé QGIS para el preprocesamiento en algunos días, pero todos los mapas son reproducibles (a excepción del día no SIG).

Consejos para participar

A pesar de que dije que nunca más participaría en este tipo de desafíos, lo volví a hacer. ¿Por qué no quería hacerlo? porque lo defino como algo desgastante, ya que en mi caso aún no termino el mapa del día y tengo que pensar en lo que haré para el día siguiente. Algunos consejos sobre esto:

  • Tener un plan. Si es que decides realizar las 30 contribuciones, puedes planificar desde antes los temas que te gustaría tratar y buscar las fuentes de datos.

  • No es necesario hacer los 30 días. Si no tienes tiempo, puedes participar los días que quieras y puedas.

  • Puedes reutilizar. Subir gráficos (mapas en este caso) que hayas hecho con anterioridad y que quieras compartir.

  • No todo tiene que ser perfecto. Si estás recién empezando, puede que haya cosas que no te resulten y puedes incluso compartir tus dudas con la comunidad. Si tienes más experiencia, esto también vale, no caigas en el vicio de querer hacerlo todo perfecto en un día.

  • Buscar inspiración mirando el hashtag del desafío. Si hay un día en que no tienes una idea clara, puedes ver qué están haciendo los demás y los diferentes enfoques que puede tener el tema del día.

  • Usar #hashtags. No te desanimes cuando recibas pocas interacciones, a veces es porque no has tenido suficiente difusión. Así que usa el hashtag del desafío y de las herramientas que usas como #rstats, #rspatial o #rayshader .

Fuentes de datos

Esto es muy importante, gran parte del desafío radica en encontrar el set de datos correcto (interesante, visualmente atractivo) para el tema del día. Algunas fuentes de datos:

En Chile

Mundo

Paquetes de R

Para este desafío fue fundamental usar los paquetes de #rspatial, los principales: {raster}, {sf} y stars y también los paquetes gráficos {ggplot2}, {ggmap}, {gganimate}, {animation}, etc.

Paquetes que nunca había usado antes:

  • rayshader : para hacer geniales mapas en 3D y mucho más

  • elevatr : permite descargar modelos de elevación digital utilizando un área de interés

  • rnaturalearth : permite acceder a capas vectoriales del mundo con datos de naturalearth

Colores

Las paletas de colores son muy importantes siempre. Acá dejo algunos recursos que siempre uso:

  • Rcolor : lista de todos los colores que puedes llamar por su nombre desde R. Después de un tiempo vas teniendo tus favoritos y los recuerdas :)

  • Comprehensive list of color palettes in r : el recurso más completo que conozco sobre paletas de colores en R.

  • I Want Hue : para obtener colores aleatorios y ordenarlos según sus características.

Cosas que aprendí

  • Proyecciones: Aprendí mucho sobre esto. Trabajar bajo la proyección correcta es muy importante y en este desafío tuve la oportunidad de trabajar con proyecciones globales. Acá algunas transformaciones que le dan un toque especial a un mismo mapa:
library(sf)
library(rnaturalearth)
library(rnaturalearthdata)

world <- ne_countries(scale = "medium", returnclass = "sf")

plot(world[2], main = "longlat", key.pos = NULL)

plot(st_transform(world[2], "+proj=moll"), main = "mollweide", key.pos = NULL)

plot(st_transform(world[2], "+proj=laea"), main = "lambert equal area", key.pos = NULL)

plot(st_transform(world[2], "+proj=robin"), main = "robinson", key.pos = NULL)

También puedes jugar con las longitudes de referencia para hacer un gif como este:

  • Rasters y ggplot: cuando se trabaja con rásters muy grandes ggplot no es la mejor opción ya que las funciones geom_tile(), geom_raster() o geom_stars() implican una transformación a data frame y puedes recibir error de memoria. También los rasters pueden sufrir algunas deformaciones cuando se transforma su proyección. Por eso, en algunos días decidí transformar el raster a polígono y trabajarlo como una capa vectorial con geom_sf() (por ejemplo) o utilizar la función plot(), como acá.

  • Hacer grillas: este tutorial es genial, lo utilicé para hacer grillas a partir de rásters, puntos y polígonos :)

  • Reticulate: para el día de nueva herramienta usé python desde RStudio con el paquete {reticulate} y aprendí varias cosas sobre pandas y geopandas que tienen en común con lo que venía haciendo con R.

  • Georeferenciar mapas con QGIS: a veces queremos recrear mapas para los cuales no tenemos una capa vectorial disponible. Me pasó esto cuando quise hacer este mapa histórico y tenía sólo la imagen original. Para esto, existe el Complemento Georeferenciador GDAL de QGIS con el que pude darle atributos espaciales a la imagen original. Luego modifiqué un shapefile actual de Sudamérica que superpuse a la imagen georeferenciada y cambié los atributos. Con esto listo, hice la visualización con ggplot.

Cosas para no olvidar

  • Nombrar bien los archivos en GitHub: siempre lo olvido. Nombrar los archivos que parten con números como: “01”, “02” porque si no, al llegar al día 10, quedarán ordenados como “1”, “10”…“19”, “2”. Yo no lo hice, y mi repositorio ahora se ve un poco desordenado :(

  • Hacer un prototipo: siempre lo digo cuando enseño, pero me sigue pasando a veces que intento hacer cosas como (animaciones o modelos 3D) con todos los datos, espero diez minutos y me doy cuenta que ni siquiera pensé en si funcionaba para una porción pequeña y que mi computador me odia.

Comentarios finales

Si te interesan los mapas y la visualización de datos ¡anímate a participar el siguiente año!

Puedes revisar un listado de todos los mapas hechos con R acá y una galería con todos los mapas acá

Si no tienes mucha experiencia, pero quieres comenzar a aprender, acá dejo algunos recursos que he compartido y te pueden interesar.




Compartir en: