How to read this map
One rink, both ends while Drake Batherson is on the ice: what the team generates on the left, what it concedes on the right. Every attempt is a Gaussian bump of height = its model xG, summed per 60 minutes of ice time (a player's exposure is time, not games). The controls switch the surface (xG heatmap ↔ vs league, the league baseline per team-hour at the same strength) and the markers: × goal · • on net · ◦ missed · small • blocked — and own shots narrows the left end's markers to attempts Drake Batherson took.
The page opens at 5v5; empty-net attempts are excluded throughout. On-ice membership comes from the shift charts; attempts without usable shift coverage are absent from both ends. Blocked-shot membership cannot be cross-checked against the play-by-play, so treat blocked-marker detail as softer than the rest.
Observed production
5v5 · on-icePercentiles rank against the other forwards over the display floor at the selected strength — a non-strength filter (rush, period, …) moves the bars but keeps that strength's spread as the backdrop.
Rolling on-ice xGF%
5v5 · on-iceModel estimates
🔒 full season · not filteredRanked against forwards; the band behind each bar is that cohort's spread (p5–p95, middle half brighter, dashed median), so where a bar lands against its band is the rank — the ordinal beside it makes that exact. The per-shot rating is quality only: it says nothing about how many attempts a player generates or faces, which is what the attempts sub-row is for.
Usage & context
descriptive · not modeledA skater absent from the fit counts as exactly cohort average (0) in QoC/QoT — the same claim ridge shrinkage makes. Penalty rates are descriptive only: taken-rate includes defensively correct penalties, and neither side is opponent- or deployment-adjusted. Nothing here is priced in goals.
Full table · all numbers
| Family | Stat | Value (current slice) |
|---|---|---|
| Observed ◆ filtered | Goals on-ice for / against | 44 / 48 |
| Observed ◆ filtered | xG on-ice for / against | 48.9 / 37.3 |
| Observed ◆ filtered | Shots on-ice for / against | 471 / 404 |
| Observed ◆ filtered | Attempts on-ice for / against | 1,056 / 857 |
| Observed ◆ filtered | xGF% | 56.8% |
| Modeled 🔒 season | Shooting — finishing · goals/60 | +0.10 80th pctl |
| Modeled 🔒 season | ↳ attempts (own attempts) | 2,055 64th pctl |
| Modeled 🔒 season | ↳ shooting talent (per-shot logit) | +0.14 90th pctl |
| Modeled 🔒 season | Offense — RAPM · team xGF/60 impact | +0.07 68th pctl |
| Modeled 🔒 season | Defense — RAPM · team xGA/60 impact (sign-flipped) | -0.04 37th pctl |
| Modeled 🔒 season | GAA/60 | +0.13 69th pctl |
| Context | Time on ice — all situations · min per game | 17:18 (73rd pctl) |
| Context | Penalties taken — minor penalties / 60 | 0.70 (55th pctl) |
| Context | Penalties drawn — minor penalties / 60 | 0.99 (70th pctl) |
| Context | Zone starts — OZS% · O-zone start share | 69% (99th pctl) |
| Context | Score state — TOI by game state | trail 26%, tied 39%, lead 35% |
| Context | Competition (QoC) — opponents' net xG-RAPM | +0.008 (58th pctl) |
| Context | Teammates (QoT) — teammates' net xG-RAPM | +0.062 (85th pctl) |
| Context | On-the-fly — share of 5v5 TOI | 68% |
Observed values reflect the active rink filters; modeled values are fixed at their full-season fit.
On-ice numbers pair the regular-season shot set with shift-chart membership;
skaters and goalies under the display floors are fit but not shown. Modeled rows come from the
value artifact keyed to RAPM fit rapm__c5b9b663 on flat__joint_structure_xg__4f64c88b
(the joint-xg structural baseline), with ratings from
joint__baseline_xg__42ccb89b (as of 2026-06-14) —
separate surfaces from the box-score xG model badged in the footer.