What it shows
Each cell is one driver × circuit affinity:- Affinity: the driver’s Bayesian-shrunk gap to his teammate at the circuit, minus his own average gap across every circuit. Each race’s input is the driver’s median lap-by-lap gap to his teammate on laps both ran clean. The circuit estimate is shrunk toward the driver’s own mean with 5 virtual races as the prior weight, so drivers with few visits are pulled toward zero affinity.
- Sign convention: negative (green) = better against his teammate at this circuit than his own average; positive (red) = worse. Each row is measured against that driver’s own average, so a row mixes green and red even for a driver who beats his teammate everywhere.
- Confidence: the fraction of the posterior coming from data versus prior,
n_obs / (n_obs + 5). Values below 0.17 (one race) are prior-dominated.
Cells are shown only when
n_obs ≥ 2 (two or more races at the circuit). Single-race visits are excluded as unreliable, so empty cells mean too few visits, not zero affinity.How to use it
- Scan a driver’s row for his strong (green) and weak (red) circuits.
- Scan a circuit’s column to see which drivers historically over-deliver there against their teammates.
- Hover a cell to see the driver’s overall gap to his teammate alongside the circuit’s deviation from it.
- Check confidence before concluding: a strong colour on a low-confidence cell is mostly prior, not signal.
Reading the signal correctly
Affinity is within-driver: it compares a driver to himself, so it is not a pace ranking. A driver who trails his teammate everywhere can still show strong green at a circuit that suits his style.Data source
The chart queriesint_driver_circuit_affinity via DuckDB-Wasm in the browser.
The heatmap pools every season in the data, 2018–2025.
For the full model definition, see the
int_driver_circuit_affinity reference.