Gallery

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.

Shot map

Attacking half, vertical framing — markers sized by xG, colored by outcome, goal angle on the best chance.

Shooting

Annotated build-up

One goal-scoring move told on a single pitch: comet trails for progression, labelled touches, the shot's angle.

Shooting
Goal · 0.41 xG

Pass network

Average positions with node size by touches and edge width by pass volume — the classic recipe from three primitives.

Passing
GKLBLCBRCBRBDMLCMRCMLWSTRW

Pass flow

Passes binned by start zone, one arrow per zone showing average direction, sized and colored by volume.

Passing

Team shape

Convex hulls over both teams' outfield positions — compactness and the space between the lines at a glance.

Structure

Zonal control

A Voronoi tessellation over all 22 players, cells colored by team — who controls which patch of grass.

Structure

Pressure heatmap

Ball-recovery pressure events binned over a fine grid on the canvas path — dense raster data without SVG's DOM cost.

Density