Football Shot Maps: 5 Things Analysts Read From Every Visual

A shot map without xG values tells you where players shot from. A shot map with xG tells you whether those locations were worth shooting from, and that is the distinction that separates basic shot volume analysis from actual chance quality assessment.

By David Findlay, Founder of KiqIQ.

Quick Answer: A football shot map is a data visualisation that plots all shot attempts from a match or period onto a scaled pitch graphic, using dot size or colour to indicate the Expected Goals (xG) value of each attempt, and distinguishing goals from non-scoring shots.

Definition: In football analytics, a shot map combines spatial data (the x and y coordinates of each attempt) with shot quality data (xG) to produce a visual record of where chances were created, how dangerous they were, and which resulted in goals.

Key point: xG is measured on a scale between zero and one. A value of 0.93 indicates a chance that would, historically, be converted 93 times out of 100 from that location and context. A value of 0.009 indicates a chance that succeeds far less frequently.

What Expected Goals (xG) Measures

xG assigns a probability to each shot by comparing it to historical data from similar attempts. The core variables in the model are shot location (distance and angle to goal), body part (header or foot), and the type of delivery that created the chance.

Delivery type has a direct effect on xG values. According to American Soccer Analysis, crosses reduce the likelihood of a shot converting, while through balls increase it. This is because through balls typically create cleaner shooting opportunities with the ball arriving in front of a player, rather than from a wide delivery requiring a redirect under pressure.

Advanced models, such as the StatsBomb xG model, layer additional variables on top of the core inputs: goalkeeper position at the moment of the shot, the positions of defenders and attackers in frame, and shot impact height. These additions aim to capture context that location data alone cannot provide.

5 Things Analysts Read From a Shot Map

The five things analysts extract from a shot map are:

  1. Shot location concentration: where the majority of attempts originate. Central box shots carry higher xG than wide or long-range attempts due to the narrower angles and greater distance involved outside that zone.
  2. xG per shot: the average quality of chances created, separating teams that shoot often from low-value positions from those that take fewer but higher-quality shots.
  3. Finishing efficiency: the gap between actual goals scored and total xG accumulated. A player scoring fewer goals than their xG total is underperforming relative to chance quality; a player scoring more may be finishing above expectation or benefiting from variance.
  4. Set piece versus open play distribution: corners, free kicks, and indirect set pieces show up as distinct clusters on a shot map, allowing analysts to separate dead-ball contributions from open play chance creation.
  5. Shot type spread: the presence of long-range, low-xG attempts indicates a team or player is taking speculative shots outside the penalty area, which can inflate shot volume without improving scoring probability.

How Shot Maps Are Built

Shot maps are produced from event data. Data providers capture the precise pitch coordinates of each shot attempt, the outcome (goal, saved, blocked, off target), the body part used, and the delivery type that preceded it. These fields feed directly into the xG model and into the visual output.

On the map itself, goals are typically shown as filled dots. Non-scoring shots use open circles or a different colour. Dot size scales with xG value, meaning a large dot indicates a high-quality chance and a small dot signals a low-probability attempt.

FBref provides shot-level xG data for hundreds of leagues and competitions, powered by Stats Perform (Opta). StatsBomb offers free event-level data, including shot coordinates and xG values, via their public GitHub repository for select competitions.

Building Shot Maps in Python

mplsoccer is the standard open-source Python library for creating shot maps. It provides scaled pitch graphics and accepts x and y coordinate data directly. Analysts layer shot data from StatsBomb’s open dataset or FBref exports on top of the pitch to produce match-level or season-level visualisations.

The workflow typically involves loading event data, filtering for shot events, extracting location coordinates and xG values, and plotting each shot as a scatter point scaled by xG and coloured by outcome.

How Clubs Use Shot Maps in Practice

In pre-match preparation, analysts use shot maps from recent opposition matches to identify where the opposing team generates its highest-xG chances. A team that consistently creates high-xG shots from central positions close to goal presents a different defensive challenge from one relying on long-range or wide-angle attempts.

Post-match, shot maps provide a performance audit. If a team accumulated a strong cumulative xG total but scored fewer goals than expected, the map shows whether those shots came from quality locations or whether a few high-xG chances were missed alongside a volume of low-probability attempts.

Shot maps are also used for player assessment. Comparing a forward’s shot location data across a season, alongside their xG-per-shot average and finishing efficiency, gives scouts and analysts a structured view of shooting behaviour that goals totals alone cannot provide.

football shot maps

Frequently Asked Questions

What is a football shot map?

A football shot map is a visualisation that plots all shot attempts onto a pitch graphic, using dot size or colour to show the xG quality of each chance, and distinguishing goals from non-scoring shots.

What does xG mean on a shot map?

xG stands for Expected Goals. It is a probability value between 0 and 1 assigned to each shot based on historical data from attempts taken in similar locations and contexts. A larger dot on a shot map typically indicates a higher xG value.

How do analysts use shot maps?

Analysts use shot maps to assess shot location quality, compare actual goals against xG accumulation, identify whether a team’s chances come from open play or set pieces, and evaluate finishing efficiency for individual players or teams across a match or season.

What is the difference between shot volume and xG on a shot map?

Shot volume counts the number of attempts regardless of quality. xG measures the combined probability value of those attempts. A team can have high shot volume but low total xG if most shots originate from poor locations such as wide angles or long range.

What tools build football shot maps?

mplsoccer is the most widely used open-source Python library for building shot maps. Analysts use it with event data from StatsBomb’s free open dataset or Opta-sourced data from FBref. Both sources provide shot coordinates and xG values at the individual shot level.

What is finishing efficiency in a shot map context?

Finishing efficiency compares actual goals scored against the total xG accumulated from shot attempts. A positive gap, more goals than xG, indicates a player or team is converting at a higher rate than historical chance quality would predict.

Sources