Charts / CH-SPA-01
CH-SPA-01 . family SPA

CHOROPLETH

supplied region polygons filled by a deterministic value ramp. Needs: region polygons (author-supplied geometry) + one value per region.

magnitudepattern

DL-01 AGRAW
Central region holds 58 of 170 open items North 12 items West 34 Central 58 East 21 South 45 0 29 58 Source: sample dataset v1, 2026-07-12

Use when

  • rates and intensities across known territories
  • where-is-it-worst questions for map-literate audiences

Do not use when

  • absolute counts (big areas lie; CH-SPA-02)
  • territories the audience cannot recognize

See instead

Alternatives

  • CH-RNK-01 (values without geography)
  • CH-SPA-02 (absolute counts)

Rules

  • fill is the deterministic background-to-high ramp; the value key is printed
  • every region labeled with name and value on the map
  • geometry is data: the same polygons re-render identically forever

Never do this

  • rainbow choropleths
  • absolute counts on area fills
  • unlabeled regions
  • 3D extrusion

QA before delivering

  • ramp key printed
  • values on the map
  • polygons closed
  • source present

Data shape

titleaction title with a number
sourcebottom-left always
uniton first region value
notecoordinates are author-supplied unit-square (0-100) geometry; the renderer scales, the author owns projection and aspect
regions[{name, polygon: [[x,y]..], label_at: [x,y], value}]
Sample data (golden)
{
  "title": "Central region holds 58 of 170 open items",
  "eyebrow": "OPEN ITEMS BY REGION",
  "source": "Source: sample dataset v1, 2026-07-12",
  "unit": "items",
  "regions": [
    {
      "name": "North",
      "label_at": [
        32,
        17
      ],
      "polygon": [
        [
          10,
          5
        ],
        [
          55,
          2
        ],
        [
          60,
          25
        ],
        [
          35,
          32
        ],
        [
          8,
          28
        ]
      ],
      "value": 12
    },
    {
      "name": "West",
      "label_at": [
        19,
        45
      ],
      "polygon": [
        [
          8,
          28
        ],
        [
          35,
          32
        ],
        [
          30,
          60
        ],
        [
          5,
          58
        ]
      ],
      "value": 34
    },
    {
      "name": "Central",
      "label_at": [
        48,
        42
      ],
      "polygon": [
        [
          35,
          32
        ],
        [
          60,
          25
        ],
        [
          68,
          50
        ],
        [
          30,
          60
        ]
      ],
      "value": 58
    },
    {
      "name": "East",
      "label_at": [
        78,
        38
      ],
      "polygon": [
        [
          60,
          25
        ],
        [
          92,
          20
        ],
        [
          95,
          55
        ],
        [
          68,
          50
        ]
      ],
      "value": 21
    },
    {
      "name": "South",
      "label_at": [
        58,
        72
      ],
      "polygon": [
        [
          30,
          60
        ],
        [
          68,
          50
        ],
        [
          95,
          55
        ],
        [
          90,
          90
        ],
        [
          25,
          88
        ]
      ],
      "value": 45
    }
  ]
}