Creación de una cancha de fútbol con Python

Cancha de fútbol

En este artículo, exploraremos cómo utilizar Python y la biblioteca Matplotlib para la creación de una representación visual de una cancha de fútbol básica. Si eres un apasionado del fútbol y te interesa aprender cómo la programación puede ayudarte a visualizar conceptos deportivos, ¡este tutorial es para ti! Aprenderás cómo generar una imagen de una cancha de fútbol con líneas, áreas de juego y puntos clave utilizando Python y la biblioteca Matplotlib.

Sin importar tu nivel de experiencia en programación o visualización de datos, Matplotlib te brinda las herramientas necesarias para crear visualizaciones impactantes y significativas. Ya sea que estés presentando tus resultados a colegas, compartiendo tus hallazgos en conferencias o simplemente explorando y visualizando tus propios datos, Matplotlib es una opción sólida y confiable.

La importancia de la cancha de fútbol

La importancia de la gráfica de un soccer pitch radica en su utilidad para diferentes propósitos:

  • Análisis táctico: Los entrenadores y analistas utilizan la gráfica del campo de fútbol para estudiar y analizar tácticas y estrategias de juego. Permite visualizar la posición de los jugadores, los movimientos en el campo y las interacciones entre ellos.
  • Planificación de jugadas: La gráfica del campo de fútbol se utiliza para diseñar jugadas y tácticas específicas. Ayuda a los entrenadores a diagramar movimientos, posiciones y desplazamientos de los jugadores durante el juego.
  • Comunicación visual: La gráfica del campo de fútbol facilita la comunicación visual entre jugadores, entrenadores y aficionados. Permite una comprensión rápida y clara de la disposición y las áreas importantes del campo durante el análisis o la explicación de situaciones de juego.
  • Transmisiones y cobertura mediática: En las transmisiones de televisión y en la cobertura mediática del fútbol, la gráfica del campo de fútbol se utiliza para mostrar la posición de los jugadores, las jugadas en curso y los gráficos interactivos que realzan la experiencia de visualización para los espectadores.

En resumen, este tipo de gráfica es una herramienta visual esencial para el análisis, la planificación y la comunicación táctica en el fútbol. Ayuda a los entrenadores, jugadores, analistas y aficionados a comprender mejor el juego y a tomar decisiones informadas.

Así que, comencemos a descubrir el mundo de la visualización de datos con Python y desbloqueemos todo tu potencial para contar historias a través de gráficos y visualizaciones impresionantes.

Codificación

Importamos matplotlib :

import matplotlib.pyplot as plt
import matplotlib.patches as patches

Agregamos las líneas que delimitan la cancha de fútbol. Una cancha de fútbol tiene como medidas máximas 90 metros de ancho por 120 metros de largo. En este ejemplo usaremos estas medidas como coordenadas.

fig, ax = plt.subplots()

ax.plot([0, 0], [0, 90], linewidth=2, color='black')      # línea vertical izquierda
ax.plot([0, 120], [0,0], linewidth=2, color='black')      # línea horizontal inferior
ax.plot([120, 120], [0, 90], linewidth=2, color='black')  # línea vertical derecha
ax.plot([0, 120], [90, 90], linewidth=2, color='black')   # línea horizontal superior
ax.plot([60, 60], [0, 90], linewidth=2, color='black')    # línea medio campo

Graficamos ambas porterías:

ax.plot([-1, -1], [41.3, 47.6], linewidth=2, color='black')    # portería 1
ax.plot([121, 121], [41.3, 47.6], linewidth=2, color='black')  # portería 2

Puntos de penal y punto medio:

ax.plot(11, 45, 'k.')     # punto penal
ax.plot(120-11, 45, 'k.') # punto penal 2
ax.plot(60, 45, 'k.')     # punto medio campo

Se crean las medias lunas con patches.Wedge(), función que recibe el punto de origen (x, y), el radio r y theta1 y theta2 que están dados en grados. Finalmente, en las líneas 18 y 19 se agregan las nuevas figuras a la gráfica.

half_moon1 = patches.Wedge((11, 45), 9.15, 310, 50, linewidth=2, edgecolor='k', facecolor='none')    # media luna 1
half_moon2 = patches.Wedge((109, 45), 9.15, 130, 230, linewidth=2, edgecolor='k', facecolor='none')  # media luna 2

ax.add_patch(half_moon1)
ax.add_patch(half_moon2)

Se crean las figuras para visualizar el área grande y chica de cada lado con la función patches.Rectangle(). Función que recibe cómo parámetros la coordenada de origen (x, y), ancho y largo del rectángulo. Nuevamente, en las líneas 33 a 36 agregamos las figuras a la gráfica.

# área grande 1
box1 = patches.Rectangle((0,24.85), 16.5, 40.3, linewidth=2, edgecolor='k', facecolor='white')

# área grande 2
box2 = patches.Rectangle((120-16.5,24.85), 16.5, 40.3, linewidth=2, edgecolor='k', facecolor='white')

# área chica 1
box3 = patches.Rectangle((0,35.85), 5.5, 18.3, linewidth=2, edgecolor='k', facecolor='none')

# área chica 2
box4 = patches.Rectangle((120-5.5,35.85), 5.5, 18.3, linewidth=2, edgecolor='k', facecolor='none')

# Se agregan las figuras a la gráfica
ax.add_patch(box1)
ax.add_patch(box2)
ax.add_patch(box3)
ax.add_patch(box4)

Mediante la función patches.Circle() crearemos el círculo central. Función que recibe cómo parámetros el punto de origen y el radio. También agregamos la figura a la gráfica.

# circulo central
circle = patches.Circle((60, 45), 9.15, linewidth=2, edgecolor='k', facecolor='none')

ax.add_patch(circle)

Estamos llegando al final y ahora creamos los cuatro tiros de esquina.

# corner inferior izquierdo
corner_ii = patches.Wedge((0, 0), 2, 0, 90, linewidth=2, edgecolor='k', facecolor='none')

# corner inferior derecho
corner_id = patches.Wedge((120, 0), 2, 90, 180, linewidth=2, edgecolor='k', facecolor='none') 

# corner superior izquierdo
corner_si = patches.Wedge((0, 90), 2, 270, 0, linewidth=2, edgecolor='k', facecolor='none') 

# corner superior derecho
corner_sd = patches.Wedge((120, 90), 2, 180, 270, linewidth=2, edgecolor='k', facecolor='none') 

ax.add_patch(corner_ii)
ax.add_patch(corner_id)
ax.add_patch(corner_si)
ax.add_patch(corner_sd)

Finalemente, agregamos título, subtitulo y mostramos la gráfica.

plt.suptitle("Barcelona vs Real Madrid", fontsize=18)
plt.title("J20 | Temporada 2022 - 2023 | La Liga", fontsize=10)
plt.axis('off')

plt.show()

Resultado final:

Resultado final de la creación de una cancha de fútbol con python y matplotlib

Acá te dejo el repositorio con el código completo: Notebooks

Si quieres saber más de mí, visita mi cv.

Conclusión

La creación de una cancha de fútbol con Python y Matplotlib es una excelente manera de combinar tus habilidades en programación y tu pasión por el deporte. A través de este tutorial, has aprendido cómo generar una representación visual de una cancha de fútbol utilizando código Python y la biblioteca Matplotlib.

¡Experimenta con la personalización y explora más formas de visualizar conceptos deportivos utilizando la programación!

Si te gustó este post, no olvides dejar un comentario y seguirme en mis redes sociales.