Gráficos para el Informe de Competitividad del País Vasco 2023 de Orkestra
Herramientas: ggplot2
Esta tarde se ha presentado el Informe de Competitividad del País Vasco que publica anualmente Orkestra (Instituto Vasco de Competitividad). Estos últimos años he colaborado con Orkestra en varias tareas relacionadas con la visualización de datos: primero, elaborando una guía de estilo y unas plantillas de Excel, y después reelaborando los gráficos del citado informe.
La reelaboración consiste principalmente en aplicar la guía de estilo y exportar los gráficos a formato vectorial para facilitar la maquetación; ocasionalmente también propongo alternativas a algunos de los gráficos elaborados por los/as investigadores/as de Orkestra.
El número de gráficos cambia de año a año, pero muchos son del mismo tipo: gráficos temporales que muestran la evolución anual de un determinado indicador en distintas regiones y países de Europa. Por otra parte, el informe se publica en tres idiomas (español, euskera e inglés), lo que tiene sus repercusiones a la hora de crear los gráficos: ordenamiento de las variables nominales (como por defecto se hace de forma alfabética, varía de un irioma a otro), cuestiones ortotipográficas (en euskera el signo de porcentaje se escribe a la izquierda de la cifra), etc.
La parte técnica
Todos los gráficos están creados con ggplot2, aunque hay que retocarlos con un programa de diseño vectorial (explicación un poco más adelante).
Función para crear los gráficos
Para automatizar el trabajo en la medida de lo posible he creado una función parametrizada para cada tipo de gráfico, que me permite controlar cuestiones como el idioma en el que ha de crearse el gráfico o la anchura del mismo (teniendo en cuenta la maquetación del informe, que puede tener entre uno y tres gráficos a la misma altura de la página).
De esta forma, los gráficos pueden crearse “bajo demanda” (los datos de algunos indicadores se actualizan mientras estamos trabajando con los gráficos, por lo que resulta vital poder actualizarlos de la forma más simple posible) o bien creer un conjunto de metadatos con los parámetros de cada grafico y crearlos en lote con alguna función del paquete purrr
.
Como he comentado, la edición final de cada gráfico le he realizado con Inkscape. Si te fijas en los gráficos de línea verás que los dos últimos puntos de cada línea muestran el valor correspondiente; aunque esas etiquetas están creadas con geom_text_repel
, cuando calcula el posible solapamiento de las etiquetas solo se tienen en cuenta los objetos de esa capa, pero no los que dibujan otras capas (lineas, puntos). Eso hace que en algunos casos (especialmente cuando hay muchas series y el gráfico ocupa solo un tercio de la anchura disponible) haya que posicionar las etiquetas de forma manual.
Idiomas
A la hora de trabajar con varios idiomas debemos tener en cuenta tres cuestiones:
- Valores literales de los datos. Debemos tener todos los textos almacenados en el conjunto de datos para poder crear el gráfico en los distintos idiomas. Además, es posible que tengamos que reordenar manualmente los factores de una variable cualitativa para que el orden de los valores coincida en todaos los idiomas.
- Metadatos del gráfico: título, nombres de los ejes, anotaciones… Podemos almacenar las cadenas de cada gráfico junto a otros metadatos en una tabla independiente y pasarlas como parámetros de la función.
- Ortotipografía de cada idioma: elementos como el separador de decimales, la posición de símbolos de moneda, porcentaje… deben ceñirse a las normas de ortotipografía de cada idioma. Funciones como
format()
nos ayudan con este tipo de tareas.
Tema gráfico
El tema personalizado también está parametrizado para poder modificar el tamaño de las etiquetas de los ejes en el caso de los gráficos más estrechos.
Conclusión
ggplot2 (junto con otros paquetes del Tidyverse y funciones de R base) es una herramienta ideal para este tipo de trabajos, ya que combina la flexibilidad creativa con las posibilidades de automatización que ofrece R.