Jake Benhart › Shot Maps
Where the NBA's leading scorers took their shots, and how well they made them compared with the rest of the league from the same spot. One page per season, the 20 leading scorers by points per game on each, from 2003-04 to 2024-25. Each scorer's card links to his other top-20 seasons and to his own page, which puts his map for every one of those seasons together; the players page lists them all. To put any two player-seasons side by side, from the same season or different ones, use Compare two players.
| Season | Scoring leader | Points per game | Qualified if he |
|---|---|---|---|
| 2024-25 | Shai Gilgeous-Alexander | 32.7 | played at least 58 games |
| 2023-24 | Luka Dončić | 33.9 | played at least 58 games |
| 2022-23 | Joel Embiid | 33.1 | played at least 58 games |
| 2021-22 | Joel Embiid | 30.6 | played at least 58 games |
| 2020-21 | Stephen Curry | 32.0 | played at least 51 games |
| 2018-19 | James Harden | 36.1 | played at least 58 games |
| 2017-18 | James Harden | 30.4 | played at least 58 games |
| 2016-17 | Russell Westbrook | 31.6 | played at least 58 games |
| 2015-16 | Stephen Curry | 30.1 | played at least 58 games |
| 2014-15 | Russell Westbrook | 28.1 | played at least 58 games |
| 2013-14 | Kevin Durant | 32.0 | played at least 58 games |
| 2012-13 | Carmelo Anthony | 28.7 | played at least 70 games or scored at least 1,400 points |
| 2011-12 | Kevin Durant | 28.0 | played at least 56 games or scored at least 1,127 points |
| 2010-11 | Kevin Durant | 27.7 | played at least 70 games or scored at least 1,400 points |
| 2009-10 | Kevin Durant | 30.1 | played at least 70 games or scored at least 1,400 points |
| 2008-09 | Dwyane Wade | 30.2 | played at least 70 games or scored at least 1,400 points |
| 2007-08 | LeBron James | 30.0 | played at least 70 games or scored at least 1,400 points |
| 2006-07 | Kobe Bryant | 31.6 | played at least 70 games or scored at least 1,400 points |
| 2005-06 | Kobe Bryant | 35.4 | played at least 70 games or scored at least 1,400 points |
| 2004-05 | Allen Iverson | 30.7 | played at least 70 games or scored at least 1,400 points |
| 2003-04 | Tracy McGrady | 28.0 | played at least 70 games or scored at least 1,400 points |
The half court is cut into hexagons 3 feet across, with one centered on the rim. For each player and hexagon: size shows how many shots he took there; color is his field-goal percentage there minus the league's from the same hexagon that season, with his own shots counted in the league. Orange is better than the league, blue is worse, and the scale stops at 15 percentage points either way. A hexagon where he took fewer than 10 shots is drawn as a gray outline and not colored, because a handful of shots says more about luck than skill. Hover a hexagon for its numbers; on a phone, tap it and they appear under the map.
Each season page has two views. 3 ft hexagons, 10-shot floor colors each hexagon from his own shots there. Pooled with the 6 around it colors each hexagon from it and its six neighbours together, still needing 10 shots, so more of the court gets a color and each color is smoother. Both come from the same table and the same checks. In the pooled view a hexagon's color comes from it and the six around it, but its size is still his own attempts in that one hexagon, so a small hexagon can carry a strong color its neighbours earned. Hover or tap it to see how many shots the color rests on.
The orange-to-blue scale was checked for the three common kinds of color blindness (protanomaly, deuteranomaly, tritanomaly) with Machado, Oliveira and Fernandes' published simulation: above and below the league stay clearly apart for all three.
Each card lists the shot types NBA.com recorded for the player (jump shot, driving layup, dunk and so on), with his field-goal percentage on each and the league's on the same type. A type with fewer than 10 attempts is listed but not compared. The made-dunk count is checked against Basketball-Reference's for every player.
NBA.com's labels are not the same in every season. It used fewer, broader labels early on, so "Jump Shot" covers far more of the league's attempts in the early seasons than in recent ones. Compare shot types within a season, not across seasons:
| Season | Labels used | "Jump Shot" share of league attempts |
|---|---|---|
| 2003-04 | 29 | 60.2% |
| 2004-05 | 29 | 59.6% |
| 2005-06 | 29 | 58.8% |
| 2006-07 | 29 | 58.4% |
| 2007-08 | 50 | 57.4% |
| 2008-09 | 49 | 55.3% |
| 2009-10 | 49 | 53.5% |
| 2010-11 | 50 | 55.7% |
| 2011-12 | 50 | 54.8% |
| 2012-13 | 50 | 53.5% |
| 2013-14 | 50 | 53.2% |
| 2014-15 | 49 | 52.8% |
| 2015-16 | 53 | 47.5% |
| 2016-17 | 53 | 46.1% |
| 2017-18 | 46 | 39.5% |
| 2018-19 | 46 | 35.3% |
| 2020-21 | 46 | 34.1% |
| 2021-22 | 46 | 32.7% |
| 2022-23 | 48 | 29.4% |
| 2023-24 | 48 | 28.9% |
| 2024-25 | 48 | 28.7% |
Each player card also carries his season's advanced stats from Basketball-Reference: eFG%, TS%, PER, usage, Win Shares, WS/48, BPM and VORP on the card, and the rest (rebound, assist, steal, block and turnover rates, the offensive and defensive splits) under "All advanced stats". They come in three kinds, and the pages say which is which:
Definitions, from the column headers of Basketball-Reference's pages:
Shot locations and shot types are NBA.com's shot logs as collected in the DomSamangy/NBA_Shots_04_25 repository. Points per game, games played, the advanced stats, dunk counts and the cross-checks come from Basketball-Reference, a Sports Reference LLC site. The qualifying rule is quoted from NBA.com's statistical minimums, Basketball-Reference's rate statistic requirements (for the seasons before 2013-14, when a player also qualified by points) and Wikipedia's list of scoring leaders. Each season page lists its files with download dates and sha256 fingerprints, and every check it passed.