← All posts

Product·

How do we calculate dynamic relative zones?

MyGamePlan

Football Analytics Platform

Event and tracking data on their own can already provide meaningful insights for football analysts, data scientists, and fans. But by combining event data with tracking data, we can go much deeper.

In this post, we showcase how to detect relative pitch zones directly from raw tracking data, without relying on predefined roles or static pitch grids.

Step 1: Cluster players into positional lines

‍Players (excluding the goalkeeper) are clustered along the length of the pitch (x-axis) using k-means with exactly three clusters.

__wf_reserved_inherit
Input data is the position of all opponent players

These clusters are then ordered by their mean position, resulting in a back-to-front line structure:

  • Defenders
  • Midfielders
  • Attackers
__wf_reserved_inherit
Clustering players into positional lines

This approach:

  • allows a variable number of players per line
  • captures the team’s dynamic spatial organization
  • avoids rigid role-based labels (e.g. left back, centre back)

In other words, positions emerge from where players actually are, not where they’re supposed to be.

Step 2: Define Zones

Depth zones (along the length of the pitch)

Using the average position of each line, we define four relative zones:

  • Behind the defensive line (defined by the last defender — i.e. the minimum x-position)‍
  • Between defense and midfield
  • Between midfield and attack
  • Before the strikers: (defined by the most advanced attacker — i.e. the maximum x-position)
__wf_reserved_inherit
Defining relative zones
Width zones (across the width of the pitch)

Using the minimum and maximum lateral positions of all opponent players, we define three zones:

  • Left of the block
  • In the block
  • Right of the block

*All zones are relative to the opponent’s current structure.

Result

By combining depth and width we get 4 × 3 = 12 dynamic, relative zones.

‍Want to see this in action?

We visualized the Club Brugge vs Anderlecht (1–1) match on 22/05/2022, using tracking data powered by SkillCorner.

__wf_reserved_inherit
Relative Zones are free to try on open data. Sign up here.

Run this on your own matches.

Ask MGPT about your team or your next opponent. Free to try with your professional email.

Try for free

Keep reading

All posts →