← The United Stateschartlink · choropleth
The United States by: metro areas · counties · congressional districts · states · 3-digit ZIP code areas
Map of the United States by metropolitan area, one number per metro, with the state borders
Also: metro area map · map US metropolitan areas by a value · CBSA choropleth · map of America's metros · metro-level data map with state borders · metropolitan statistical area map

Example: Average income per tax return by metro area, 2021 — Adjusted gross income per federal return filed for tax year 2021, by metropolitan statistical area. Naples, San Jose and San Francisco lead; the deepest shade is $150,000 or more. Incomes are summed from each metro's counties. State lines are drawn faintly beneath; a metro that straddles one, like New York or Kansas City, stays whole.
About this template
Data: one row per metropolitan statistical area with its 5-digit CBSA code (35620 for New York; the Census title 'New York-Newark-Jersey City, NY-NJ' and the first city name are accepted too) and a number. Only metropolitan areas are drawn, not micropolitan ones, so most rural land stays unfilled; that is what a metro map looks like. State lines are drawn faintly beneath the metros, not on top, because metros straddle state lines: New York, Kansas City and Washington each span two or three states and stay whole. Same design as the state, county and district maps, so the four can sit side by side.
A choropleth map of the metropolitan statistical areas of the United States (393 metros, by CBSA code), each region filled by one number from your data (the "income" column). The neighbouring US states and Puerto Rico are drawn beneath as unfilled context, so the map does not float.
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.6-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 — metro (string, "Metro area (CBSA code)"), income (number, "Average AGI per return ($)") — and 367 rows in the example "Average income per tax return by metro area, 2021". Regions are named by 5-digit CBSA codes (or the metro's Census title, "Sioux Falls, SD-MN"); 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_ttRonmCAF3crqyuPIDxxz; buckets (with the values in classes and a swatch legend): ast_01sccuIslcn50ZzrTbkRB; editorial (in the editorial house style — serif type on paper, a green ramp): ast_IKytyYgscbXL3yC50xTGU; categories (with a text category per region and a swatch legend): ast_vAlIdQ4TiUt9Flv7CQOnj; buckets-dark (with the values in classes and a swatch legend, on a dark canvas): ast_wHllAmleE6t3XllEYEiqq; surroundings (with the land around the place drawn in grey): ast_dQhYo9dR4CaJtPaOLZZQB; categories-dark (with a text category per region and a swatch legend, on a dark canvas): ast_RJVSZymAzT7YarbiLEEwZ; buckets-editorial (with the values in classes and a swatch legend, in the editorial house style — serif type on paper, a green ramp): ast_ko5G9O3oz4HL8oxwzSQhK; dark-surroundings (on a dark canvas, with the land around the place drawn in grey): ast_JGXPRUewWimWZukpDcJQH; buckets-surroundings (with the values in classes and a swatch legend, with the land around the place drawn in grey): ast_N8BJWVb9OVQ5Os6KyV61o; 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_6KudChorAX9wDT72VTWjV; editorial-surroundings (in the editorial house style — serif type on paper, a green ramp, with the land around the place drawn in grey): ast_5UR2zjoEODdDqJXR1Hm0t; categories-surroundings (with a text category per region and a swatch legend, with the land around the place drawn in grey): ast_EOa8mSbfLZyEJt5G6epcw; 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_y0JebCNxjKbqgvZMvCeEW; 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_hgaFA6ZzamAbzpeKwSkBY; 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_1gKeEfYhOAjyTIT0cQlKF; 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_eNMNpDVYtACm6aes5phnP. 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 |
|---|---|---|
| metro | string | Metro area (CBSA code) |
| income | number | Average AGI per return ($) |
367 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_SLVtPm408S6EMjx37JgfY",
"knobs": {
"theme": "light",
"dataType": "gradient",
"title": {
"text": "Your title"
},
"source": {
"text": "Where the numbers come from"
}
},
"data": {
"columns": [
{
"id": "metro",
"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
},
"context": {
"fill": "transparent",
"stroke": {
"color": "#9ca3af",
"width": 0.6
},
"geography": "us-states-pr"
},
"outline": {
"width": 0.6
},
"geography": "us-metros"
},
"title": {
"text": "Average income per tax return by metro area, 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": "metro"
}
},
"description": {
"text": "Adjusted gross income per federal return filed for tax year 2021, by metropolitan statistical area. Naples, San Jose and San Francisco lead; the deepest shade is $150,000 or more. Incomes are summed from each metro's counties. State lines are drawn faintly beneath; a metro that straddles one, like New York or Kansas City, stays whole."
}
}map · choropleth · united-states · metros · cbsa · metropolitan-areas · us-set · state-context
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 county, one number per county, with the state borders
- Map of the United States by state, one number per state
- Map of Wyoming by ZIP code, one number per ZIP code
- Map of Wisconsin by ZIP code, one number per ZIP code
- Map of West Virginia by ZIP code, one number per ZIP code
- Map of Washington by ZIP code, one number per ZIP code
- All templates →