Infografía mundial de fútbol 2026

Infografía mundial de fútbol 2026

Visualizando el Cuadro del Mundial 2026 con R: Grafos y Procesamiento de Imágenes

En este artículo, desglosaremos el código detrás de una infografía circular que mapea las fases eliminatorias de la Copa del Mundo. Este proyecto es un excelente caso de uso para un portafolio de análisis de datos, ya que combina teoría de grafos, manipulación de datos JSON y procesamiento de imágenes, usando el lenguaje R.

1. Procesamiento Dinámico de Imágenes

El atractivo visual de la infografía depende de cómo se muestran las banderas. Para esto, el script define dos funciones auxiliares fundamentales:

  • preparar_bandera_zoom: Descarga las banderas de los países participantes desde la URLs que se encuentran en el archivo JSON, unifica las dimensiones en un lienzo cuadrado y aplica un recorte circular (crop_circle). Esto garantiza uniformidad sin importar el formato original de cada bandera.
  • partido_jugado: Es la encargada de la narrativa visual. A medida que los equipos son eliminados, esta función toma la bandera del perdedor y le aplica un efecto de lavado (tiñéndola de blanco y aumentando la transparencia). Así, el ojo del espectador sigue de forma natural a los equipos ganadores hacia el centro del gráfico.

2. Modelando el Torneo como un Grafo

Un torneo de eliminación directa se representa matemáticamente como un árbol dirigido hacia la raíz.

  • Se crea un grafo de 63 nodos en total: 32 equipos en dieciseisavos, 16 en octavos, 8 en cuartos, 4 en semis, 2 en la final y 1 nodo central para el campeón.
  • Las relaciones (edges) se estructuran de forma que dos nodos compiten y su nodo “padre” (floor(nodo / 2)) recibe al ganador.
  • Se identifican lógicamente los extremos (is_leaf para los 32 equipos iniciales) y el centro (is_root para el trofeo).

3. Lógica de Clasificación y Opacidad

El siguiente paso del script simula el desarrollo del torneo ronda por ronda. La lógica matemática es elegante y repetitiva:

  1. Se define el nodo_ganador.
  2. La imagen del ganador se copia al nodo_padre, avanzando en la llave.
  3. Se invoca la función partido_jugado con parámetros de transparencia más severos para el perdedor (blanco = 60) y más sutiles para el ganador (blanco = 20 ó 0 para el campeón, España).

4. Renderizado Circular y Detalles Finales

Para escapar de la típica visualización vertical u horizontal, el gráfico adopta una estructura de dendrograma circular:

  • ggraph(layout = 'dendrogram', circular = TRUE): Distribuye el árbol en 360 grados.
  • geom_edge_elbow(): Dibuja las conexiones ortogonales grises clásicas de las llaves de torneos.
  • geom_image(): Coloca las banderas procesadas exactamente en las coordenadas de cada nodo.

Finalmente, para darle un acabado profesional y publicable en GitHub Pages, se utiliza cowplot (draw_image) para sobreponer marcas de agua, incluyendo un icono central de trofeo y la firma del repositorio en la esquina. El resultado se exporta a PNG en alta resolución (600 dpi), listo para la web.

Más detalle del código en el repo repo github

El gráfico resultante es el siguiente

WC26

Rubén Miranda Rubén Miranda Data curious!