I have two sets of data (courtesy of Statsbomb), where each contains the x,y location of where passes occured during a football game as well as the minute of the event for the two different teams. My idea was to visualize this data using heatmaps, in order to get an overview of how each respective team passed the ball on the pitch. My intention was that such an illustration would provide the foundation of asking/answering questions such as;

  • Where the opponent team prefered to play (i.e how can the opposing focus their resources on putting extra pressure to avoid the opponents from playing as they want)
  • By splitting the game into four intervalls, can one detect changes of how the game is played throughout the game?

Therefor I have visualized the data in heatmaps containing all the passes as well as based on four time intervalls, where the x,y values are mapped onto a coordinate system

xlim = 0 - 120

ylim = 0 - 80

The number of registered passes (size of data set) vary between the teams, $n_1 = 447$ , $n_2 = 202$. The time intervalls is the length of each period (1 & 2) divided by two, rounded so they do not overlap. Example period 1: Intervall1 = [0, 24], Intervall2 = [25, 48]

Now I would like to in some way compare the data (not solely based on what I can see with my bare eye in the heatmaps), and analyze the difference between the two teams. I don't have previous experience in doing this, so I would appreciate any suggestions on how I could do this.

The mapped data for the entire game looks like this (arrow indicates attacking direction): Image1


  • $\begingroup$ You shouldinclude some guide for the colors on the maps! Is this for the first interval? One idea to help in comparison, is to switch left/right on one of the figures, so that the attacking direction is the same. $\endgroup$ May 30, 2022 at 18:47
  • $\begingroup$ The colors on the maps goes from 0 (Dark grey-ish) to 1 (Yellow), where yellow indicates a larger concentration of observations - but yes I agree I should include this! The plots above are for the entire game, and the attacking direction is the same for both teams (left to right) as of now, indicate by the small arrow in the top left corner (perhaps I should make it a more distinct color). $\endgroup$
    – OLGJ
    May 31, 2022 at 8:29
  • $\begingroup$ I would be tempted to visualize these data as vector fields (one for each team), where each vector goes from the origin of the pass to where it was completed (next touched or out of bounds). That would both show all the details while visually aggregating the data and would not rely on some model, as is required by drawing a contour map. Coloring the vectors by another covariate, such as the time of the pass, its length, whether it was successful, etc., could reveal interesting patterns related to your questions. $\endgroup$
    – whuber
    Jun 30, 2023 at 15:15

1 Answer 1


The smoothing introduced in these plots would concern me a little, because there may be important fine-scale patterns that this misses. I would be inclined to begin instead with a hexbin plot, which would show this data well without the need for any smoothing. You can do with in R with the hexbin package or the geom_hex command in ggplot2.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.