How to read this map
One rink, both ends while Cody Ceci 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 Cody Ceci 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 defensemen 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 defensemen; 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 | 36 / 50 |
| Observed ◆ filtered | xG on-ice for / against | 49.5 / 49.3 |
| Observed ◆ filtered | Shots on-ice for / against | 510 / 540 |
| Observed ◆ filtered | Attempts on-ice for / against | 1,237 / 1,175 |
| Observed ◆ filtered | xGF% | 50.1% |
| Modeled 🔒 season | Shooting — finishing · goals/60 | -0.00 28th pctl |
| Modeled 🔒 season | ↳ attempts (own attempts) | 3,057 84th pctl |
| Modeled 🔒 season | ↳ shooting talent (per-shot logit) | -0.02 41st pctl |
| Modeled 🔒 season | Offense — RAPM · team xGF/60 impact | -0.01 61st pctl |
| Modeled 🔒 season | Defense — RAPM · team xGA/60 impact (sign-flipped) | -0.01 46th pctl |
| Modeled 🔒 season | GAA/60 | -0.02 52nd pctl |
| Context | Time on ice — all situations · min per game | 17:33 (37th pctl) |
| Context | Penalties taken — minor penalties / 60 | 0.32 (11th pctl) |
| Context | Penalties drawn — minor penalties / 60 | 0.00 (1st pctl) |
| Context | Zone starts — OZS% · O-zone start share | 39% (7th pctl) |
| Context | Score state — TOI by game state | trail 29%, tied 41%, lead 30% |
| Context | Competition (QoC) — opponents' net xG-RAPM | +0.001 (35th pctl) |
| Context | Teammates (QoT) — teammates' net xG-RAPM | +0.047 (77th pctl) |
| Context | On-the-fly — share of 5v5 TOI | 66% |
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.