Shot map
Attacking half, vertical framing — markers sized by xG, colored by outcome, goal angle on the best chance.
Finished visualisations, each built from the same handful of composable layers. Every card ships its full source — copy it, or open it as a standalone project.
Attacking half, vertical framing — markers sized by xG, colored by outcome, goal angle on the best chance.
One goal-scoring move told on a single pitch: comet trails for progression, labelled touches, the shot's angle.
Average positions with node size by touches and edge width by pass volume — the classic recipe from three primitives.
Passes binned by start zone, one arrow per zone showing average direction, sized and colored by volume.
Convex hulls over both teams' outfield positions — compactness and the space between the lines at a glance.
A Voronoi tessellation over all 22 players, cells colored by team — who controls which patch of grass.
Ball-recovery pressure events binned over a fine grid on the canvas path — dense raster data without SVG's DOM cost.