← The United Stateschartlink · choropleth
The United States by: counties · congressional districts · metro areas · states · 3-digit ZIP code areas
Map of the United States by county, one number per county, with the state borders
Also: US county map · colour every county by a value · county-level choropleth with state borders · map of America by county · county data map

Example: Average income per tax return by county, 2021 — Adjusted gross income per federal return filed for tax year 2021, by county. A handful of counties around New York, San Francisco, Jackson Hole and Aspen average several times the national figure. Grey areas have too few returns to publish or report by planning region (Connecticut); Puerto Rico files separately.
About this template
Data: one row per county with the 5-digit FIPS code (06037 for Los Angeles County — keep the leading zero) and a number. Puerto Rico's municipios have FIPS codes starting 72; Connecticut's nine planning regions replaced its counties in 2022 and have codes 09110 to 09190. A county with no row stays grey. State borders are drawn on top so the counties read inside their states. Same design as the state, district and metro maps, so the four can sit side by side.
A choropleth map of the counties of the United States (3,222 counties, boroughs, parishes, Connecticut's planning regions and Puerto Rico's municipios, by FIPS code), each region filled by one number from your data (the "income" column). The borders of the US states and Puerto Rico are drawn on top of the regions in dark navy blue, 0.5 units wide, so the finer regions read inside their larger units.
A sequential colour scale from pale blue for the smallest values to deep navy blue for the largest; pinned to 40000 to 150000, so values beyond the ends take the end colour and the colour bar says ≤ and ≥; a gradient colour bar below the map, with its labels underneath; values formatted as USD amounts, in compact form (1.2k, 3.4M), 0 decimals; on a white canvas (#ffffff) with near-black text — a light theme; 0.25-unit hairline outlines between regions.
The title and description are left-aligned above the chart. Font: Inter (the default); a source line with a link sits at the bottom, with the chartlink badge in the corner.
Data: 2 columns — county (string, "County (5-digit FIPS)"), income (number, "Average AGI per return ($)") — and 3,143 rows in the example "Average income per tax return by county, 2021". Regions are named by 5-digit county FIPS codes (or "County name, ST"); a region with no row stays unfilled in grey, and an unknown code fails loudly with the nearest matches. Your data keeps the same column ids and every other setting comes from the template; an agent can change any of them.
Other looks of this template — dark (on a dark canvas): ast_rkQyY8ECrrokWIEyvu0Zr; buckets (with the values in classes and a swatch legend): ast_MyCIVWPKclgL7ygUSxHz2; editorial (in the editorial house style — serif type on paper, a green ramp): ast_GIoThE75R1jZuTH2vgmm9; categories (with a text category per region and a swatch legend): ast_nezGB3dd7x2ul0qVy40tw; buckets-dark (with the values in classes and a swatch legend, on a dark canvas): ast_KPnzSa5yrwORGP5ZgFtvq; surroundings (with the land around the place drawn in grey): ast_UzPH4Bcemz4FUjDh8HlZJ; categories-dark (with a text category per region and a swatch legend, on a dark canvas): ast_PuoentTssFpNoY39oG0QN; buckets-editorial (with the values in classes and a swatch legend, in the editorial house style — serif type on paper, a green ramp): ast_9AFsbP501IY7oYFbEO1jF; dark-surroundings (on a dark canvas, with the land around the place drawn in grey): ast_ynrs18LVFnL1y4NwFjSGP; buckets-surroundings (with the values in classes and a swatch legend, with the land around the place drawn in grey): ast_jmubvzXZQXa6FNq4KgXDF; categories-editorial (with a text category per region and a swatch legend, in the editorial house style — serif type on paper, a green ramp): ast_YZ4FBW59AcX5ZvA8xgYoD; editorial-surroundings (in the editorial house style — serif type on paper, a green ramp, with the land around the place drawn in grey): ast_Ivc1L084ZXgLK1nY19tZn; categories-surroundings (with a text category per region and a swatch legend, with the land around the place drawn in grey): ast_3EJFReKQMQ6RQiVCf2JaI; buckets-dark-surroundings (with the values in classes and a swatch legend, on a dark canvas, with the land around the place drawn in grey): ast_VZRNi9DxKaTIBbNqhnikW; categories-dark-surroundings (with a text category per region and a swatch legend, on a dark canvas, with the land around the place drawn in grey): ast_1pNXXERt1nObpqbWMiNlp; buckets-editorial-surroundings (with the values in classes and a swatch legend, in the editorial house style — serif type on paper, a green ramp, with the land around the place drawn in grey): ast_Bd62D2egPUpr2vTrLV8kV; categories-editorial-surroundings (with a text category per region and a swatch legend, in the editorial house style — serif type on paper, a green ramp, with the land around the place drawn in grey): ast_ckDYxqCjVHzYxLzW7t63r. On the page, switch with the toggles; an agent passes that id as the template instead.
Use it with your agent
Copy the prompt, paste it into Claude, ChatGPT, Cursor or any agent with the chartlink MCP server or API, and give it your numbers. It rebuilds this exact design with your data and hands back an embed, a PNG and a page.
The prompt in full
Data this template expects
| column id | type | in the example |
|---|---|---|
| county | string | County (5-digit FIPS) |
| income | number | Average AGI per return ($) |
3143 rows in the example. Your data keeps these column ids; everything else about the chart comes from the template.
For agents: the API call
POST https://chartlink.app/api/assets
{
"template": "ast_Z2JRunYexViePjYImlcb1",
"knobs": {
"theme": "light",
"dataType": "gradient",
"title": {
"text": "Your title"
},
"source": {
"text": "Where the numbers come from"
}
},
"data": {
"columns": [
{
"id": "county",
"type": "string"
},
{
"id": "income",
"type": "number"
}
],
"rows": [
[
"…"
]
]
},
"publish": true
}The recipe (the template's settings)
{
"chart": {
"domain": [
40000,
150000
],
"format": {
"kind": "currency",
"compact": true,
"currency": "USD",
"decimals": 0
},
"borders": {
"color": "#1f2937",
"width": 0.5,
"geography": "us-states-pr"
},
"outline": {
"width": 0.25
},
"geography": "us-counties"
},
"title": {
"text": "Average income per tax return by county, 2021"
},
"preset": "map-light",
"source": {
"url": "https://www.irs.gov/statistics/soi-tax-stats-individual-income-tax-statistics-zip-code-data-soi",
"text": "IRS Statistics of Income, individual income tax statistics, tax year 2021"
},
"encoding": {
"value": {
"column": "income"
},
"region": {
"column": "county"
}
},
"description": {
"text": "Adjusted gross income per federal return filed for tax year 2021, by county. A handful of counties around New York, San Francisco, Jackson Hole and Aspen average several times the national figure. Grey areas have too few returns to publish or report by planning region (Connecticut); Puerto Rico files separately."
}
}map · choropleth · united-states · counties · state-borders · us-set
Similar templates
- Map of the United States by 3-digit ZIP code area, one number per area, with the state borders
- Map of the United States by congressional district, one number per district, with the state borders
- Map of the United States by metropolitan area, one number per metro, with the state borders
- Map of the United States by state, one number per state
- Map of Wyoming by county, one number per county
- Map of Wisconsin by county, one number per county
- Map of West Virginia by county, one number per county
- Map of Washington by county, one number per county
- All templates →