{soccerAnimate} un paquete de R para crear animaciones de fútbol en 2D

Ismael Gómez Schmidt
Ciencia y Datos
Published in
5 min readAug 24, 2020

Hace poco publiqué mi primer paquete de R: {soccerAnimate}, con el cual puedes crear animaciones de fútbol en 2D usando datos de tracking. Aquí te cuento algunos detalles de sus funcionalidades y las futuras implementaciones.

Principales funcionalidades

Todas las funciones del paquete están preparadas para trabajar únicamente con el formato del proveedor de datos Metrica Sports, dado que ellos liberaron un dataset de ejemplo (disponible públicamente acá).

A continuación el detalle de cada función disponible en el paquete:

  1. Preparar los datos antes de visualizar

La función get_tidy_data() te permite importar los datos a RStudio y procesarlos de manera que tengan la estructura óptima para poder visualizarlos posteriormente.

Además del cambio de estructura, entre medio del proceso también se limpian los caracteres para tener los números de camiseta, unir los datos de ambos equipos, convertir las coordenadas a metros, la identificación del arquero, entre otros. Acá un ejemplo del formato de los datos de salida:

Como es posible observar, la mayoría de las columnas se auto explican con su nombre, excepto is_gk que corresponde a una variable booleana que indica si el jugador es o no el arquero. Los datos de Metrica Sports tienen 25 cuadros (frames) por segundo, por lo tanto el intervalo entre cada muestra es de 0.04 segundos.

2. Obtener información de eventos específicos

Con la función events_info() puedes obtener detalles de eventos específicos como tiros, goles, tiros libres y corners. Acá un ejemplo para los goles del partido N°1 del dataset:

La utilidad de esto es que además de cuantificar los eventos puedes observar en qué momentos y en qué cuadros ocurre y se desarrolla el evento (StartTime & EndTime + StartFrame & EndFrame), lo que será información a utilizar como entrada cuando se hagan las visualizaciones.

Es importante tener en cuenta que para esto se utiliza la base de datos de eventos y no la de tracking. Ambas bases de datos están disponibles para dos partidos de ejemplo en el repositorio de Metrica Sports.

3. Visualizar un único frame específico

Por el momento, para la versión 0.1.0 del paquete, la principal utilidad de la función soccer_plot() es visualizar un único frame específico, con tal de verificar que los datos, la identificación del frame y que las configuraciones estéticas sean las correctas. Esto previamente a la creación de las animaciones que seguramente demorarán más tiempo en generarse.

Aquí un ejemplo del frame 99040 del partido 1 del dataset, el cual es parte del intervalo de frames que corresponde al 3er gol del equipo local (Home) según la información anterior: del frame 99032 al 99046. Puedes exportar tu gráfico como imagen en formato PNG.

4. Crear las animaciones 2D

En este punto ya puedes crear tu animación usando la función soccer_animate(). Acá el listado de sus argumentos y la explicación respectiva:

  • tidy_data: los datos ordenados y procesados que se obtienen con la función get_tidy_data()
  • ini_time & end_time: el tiempo inicial y el tiempo final, en segundos, a considerar en la animación. Esta información la puedes obtener mirando las columnas StartTime y EndTime de la información de eventos que arroja la función events_info()
  • method: el método de análisis espacial 2D que se quieras visualizar. Las opciones son “base” (sin ningún método), “convexhull”, “voronoi” o “dealunay”.
  • pitch_fill, pitch_lines_col, home_team_col & away_team_col: variables asociadas al color de relleno de (en el mismo orden): la cancha, las líneas de la cancha, los jugadores del equipo local y los jugadores del equipo visita.
  • provider: el proveedor de datos. Por ahora solo funciona para “Metrica”.
  • show_anim: variable booleana (T o F) para determinar si quieres que el Viewer de RStudio muestre la animación.
  • export_gif: variable booleana (T o F) para determinar si se exporta o no la animación en formato GIF
  • gif_name: nombre del archivo GIF a exportar

Ahora algunos ejemplos de salida:

En el siguiente link al repositorio github encontrarás las instrucciones de cómo instalar y usar el paquete con algunos ejemplos que incluyen el código utilizado.

Futuras implementaciones

Actualmente tengo en carpeta las siguientes implementaciones:

  • Reporte de estadísticas a nivel de jugador y equipo con minutos jugados, distancia recorrida total/caminando/trotando/corriendo y velocidad
  • Mapas de calor por jugador para el partido completo o periodos específicos de tiempo
  • Incluir eventos en las visualizaciones
  • Más personalización estética (temas, fuentes, etc.)
  • Mejorar documentación
  • Implementar distintas aplicaciones desarrolladas por la comunidad de la analítica de fútbol, como por ejemplo un modelo de “pitch control” como el del siguiente video:

Estoy abierto a sugerencias de mejoras y para nuevas implementaciones. También hay espacio para quienes quieran contribuir.

Si tienes alguna duda, comentario o sabes de algún dataset público disponible para incorporar, escríbeme un correo a ismaelgomezs@gmail.com o búscame en twitter @DatoFutbol_cl

--

--

Ismael Gómez Schmidt
Ciencia y Datos

Data Scientist | Football and Ice Hockey Data Analyst | #SportsAnalytics | @ismaelgomezs | datofutbol.cl | @DatoFutbol_cl