Nearly 380 three-digit codes, and no hierarchy to hang them on: unlike most countries the North American plan has no leading block, and many codes are overlays sharing the same ground as another. So the states are the patches here, and every code is pinned where it is dialled.
How to read the map. Each patch is a state, coloured by its Census Bureau division so that neighbouring groups stay apart; the state's postal abbreviation sits on it, pushed outside with a leader where the state is too small to hold it. The dots are the codes. Where several codes cover the same ground — an overlay, which is how the plan has grown since the 1990s — they share one dot and are written together, so Manhattan reads 212·332·646·917 rather than four dots stacked on each other.
What a dot is, and is not. A code is pinned at the centre of the places it serves, not at a boundary: area codes follow rate centres rather than county or state lines, and published boundary data for them is either years out of date or not free to redistribute. So this map answers "which code is dialled around here" and does not claim to draw the edges. Numbers also port freely across the country, so a code indicates where a number was assigned, not where its owner is.
Off the map. Guam (671), American Samoa (684), the Northern Mariana Islands (670) and the U.S. Virgin Islands (340) are in the numbering plan and listed in the panel, but too far out to draw beside the states. Canada and the Caribbean members of the plan are not part of this page.
Sources. Code list: Wikipedia, List of North American Numbering Plan area codes, which tracks NANPA's assignments. Code locations: Area-Code-Geolocation-Database, compiled from NANPA's area-code and city listings joined to GeoNames coordinates. Geometry: US Census Bureau cartographic boundaries at 1:10m, via us-atlas, dissolved by state, Census division and Census region.