La visualización de datos es un área que cada vez está más presente en nuestras vidas. Existe un área de estudio dedicada exclusivamente a transmitir información visual en multitud de formatos. Uno de esos casos en los que podemos ver la representación de datos de forma cotidiana es en los resultados electorales. Los medios de comunicación hacen uso de todo tipo de gráficos y diagramas para mostrar el reparto de votos desde todos los puntos posibles. Sin embargo, las elecciones políticas tienen una componente fundamentalmente espacial, lo cual nos revela mucha información sobre la distribución del voto. Por ello, hoy vamos a aprender a crear un mapa como este en QGIS con los resultados de las elecciones generales españolas de 2019.
Vamos a representar el partido político ganador a nivel de participación municipal, variando la intensidad del color en función del porcentaje de votos obtenido. Para ello, vamos a cargar el shapefile “elecciones_generales_municipios.shp” en QGIS, el cual podéis descargar aquí. El primer paso es aplicar una simbología categorizada en función del municipio ganador. En este caso, vamos a utilizar el campo “partido_ag”, el cual agrupa diferentes partidos regionales bajo unas mismas siglas para simplificar las cosas (como ocurre con las confluencias del PSOE o de Unidas Podemos).
A continuación, vamos a crear una regla de simbología que aplique un color variable a cada polígono proporcional al porcentaje de votos obtenidos del partido ganador. De esta forma, crearemos un gradiente entre el blanco y el color característico de cada partido, haciendo que el color sea más intenso mientras mayor sea el porcentaje de votos. Vamos a hacer esto antes de elegir el color principal de cada partido porque vamos a crear el estilo una vez y lo vamos a pegar en el resto de categorías.
CONSEJO: Haciendo click en la pestaña Ver > Paneles > Estilo de capas se nos abrirá un panel de simbología que actualiza al instante el estilo de la capa, haciendo que podamos ver los cambios al momento.
Vamos a empezar a simbolizar una categoría que tenga bastante representación en el mapa. Todas van a tener un estilo sencillo de relleno simple y borde. En la ventana de Selector de símbolos vamos a pinchar en el botón de configuración que hay a la derecha del selector de color de relleno.
Pinchamos en la opción “Editar…” del desplegable y se nos abrirá una ventana para crear una cadena de expresión. En el recuadro de texto pegaremos lo siguiente:
ramp_color( reate_ramp( map(0.25,'255,255,255', 0.7, @symbol_color ) ), "porcentaje"/100)
Quedaría de esta manera:
Confuso, ¿verdad? ¡No te preocupes! Vamos a desgranar paso a paso esta expresión.
- La función “ramp_color” aplica el color de una rampa determinada en función del valor que le pasemos, oscilando entre 0 y 1. El primer argumento debe ser una rampa de color ya existente (por ejemplo, ‘Spectral’) o una que creemos nosotros mismos. El valor que le pasamos es el porcentaje de votos (por eso invocamos el campo “porcentaje”) dividido entre 100 para que el resultado oscile entre 0 y 1. Esta función está descrita en la categoría “Color” de la columna de funciones que vemos en el medio de la ventana.
- La función “create_ramp” crea una rampa de color en función de los parámetros que le indiquemos. Es el primer argumento que le hemos pasado a nuestra función “ramp_color”. Toma como argumento un mapa de valores.
- La función “map” crea un mapa de valores, el cual es el argumento de la función “create_ramp” que acabamos de utilizar. Tenemos que pasarle el punto y el color inicial, así como el punto y el color final. La rampa oscila entre 0 y 1. Sin embargo, para acentuar el contraste de color, hemos recortado el intervalo y lo hemos definido entre 0.25 y 0.7. Como color inicial hemos elegido el blanco (cuyo código RGB es 255, 255, 255). El color final de nuestra rampa será el característico de cada partido político. Para evitar modificar la expresión para todas las categorías, vamos a hacer que obtenga automáticamente el color de la categoría. Para ello usaremos la variable especial de QGIS “@symbol_color”. De esta forma, utilizará como color final de la rampa el tono rojizo que tiene ahora nuestro estilo.
Recapitulando.
Hemos creado una rampa de color para esta categoría entre el blanco y el color de relleno que hay definido en el estilo (el cual se obtiene dinámicamente mediante la variable @symbol_color). Dentro de ese gradiente de color, el tono de cada polígono dependerá linealmente del porcentaje de votos del partido ganador. Sencillo, ¿verdad?
Si aceptamos los cambios y visualizamos nuestra simbología nos daremos cuenta de una cosa importante: los bordes de los polígonos tienen el borde negro, el cual rompe el efecto que queremos dar a nuestro mapa. Quitar el borde no es una opción porque QGIS siempre muestra algún tipo de borde, aunque sea muy fino. Por lo tanto, vamos a aplicar a los bordes la misma regla de color que el relleno, dando una impresión de que los polígonos no tiene líneas exteriores.
Vamos a utilizar la misma expresión que utilizamos para el color. Al aceptar veremos algo así:
El siguiente paso es copiar y pegar este estilo en todas las categorías que tenemos. Para ello, vamos a pinchar en el botón «Cambiar…» de la parte superior y asegurarnos de que tiene el estilo personalizado que hemos definido. Hecho esto, iremos seleccionando una a una todas las categorías y pinchamos en el botón «Cambiar…» para aplicar nuestra simbología. Deberíamos acabar con todas las categorías con la misma simbología:
Ya solo quedaría ir categoría por categoría asignándole su color característico. Gracias a las expresiones que hemos usado, cada categoría cogerá el color de relleno para elaborar el gradiente. Utilizando el color típico de cada partido nos quedaría un mapa con el siguiente aspecto:
Estimado no me queda muy claro si se debe si copiando y pegando:
ramp_color(
reate_ramp(
map(0.25,’255,255,255′,
0.7, @symbol_color
)
), «porcentaje»/100)…es suficiente o necesesito hacer algo mas. porque qgis me dice expresion no valida a la hora de pegar la expresion.
Saludos
Buenas, Ignacio.
Copiar y pegar tal cual la expresión funciona. Asegúrate de no cometer ningún error de sintáxis. Veo que, en lugar de create_ramp(), has escrito reate_ramp() (sin la «c» inicial). Asegúrate de escribir «porcentaje» en lugar de «porcentaje». Esa variable hace referencia a un atributo de la capa, y los atributos en QGIS se invocan con comillas dobles.
Un saludo!
Daniel, muchas gracias por la rápida respuesta.
El error en la «c» ya viene con lo que dejo usted.
De todas formas sigo teniendo el mismo error. Creo que no esta reconociendo la variable @symbol_color.
Le dejo el mensaje de error a ver si se se puede dilucidar mejor la situación:
Errores del analizador:
syntax error, unexpected VARIABLE, expecting COMMA or ‘)’
syntax error, unexpected ‘)’, expecting $end
syntax error, unexpected ‘)’, expecting $end
Muy interesante. Tendría una pregunta. Como se puede acceder a los datos que hay en el fichero dbf? Códigos, nombre del municipio, densidad de población, partido mas votado… Supongo que en el INE, pero no encuentro el sitio exacto. Me sería de gran ayuda tu respuesta. Gracias!