Charts / CH-COR-03
CH-COR-03 . family COR

XY HEATMAP

two ordered dimensions x one measure, cells shaded and numbered. Needs: grid of values over two ordered dimensions (weekday x week, hour x day).

correlationpatterndensity

DL-01 AGRAW
Thursday is the heaviest delivery day in all four weeks W25 W26 W27 W28 Mon 12 14 11 13 Tue 18 16 17 19 Wed 22 25 21 24 Thu 38 41 44 47 Fri 16 15 18 17 Source: sample dataset v1, 2026-07-12

Use when

  • patterns across two ordered dimensions: weekday x week, hour x day, section x month
  • dense grids where a scatter would be unreadable

Do not use when

  • entity rows with mixed-scale metrics (use CH-TAB-02, column-normalized)
  • exact value lookup as the primary job (a plain table wins)
  • diverging data around a midpoint (needs a diverging scale entry, planned)

See instead

Alternatives

  • CH-TAB-02 (heatmap table for entity rows)
  • CH-TIM-07 (calendar heatmap, planned)

Rules

  • single-hue ramp from cell_low to cell_high (primary); never a rainbow
  • the value is printed in every cell; color alone never carries the number
  • cell text flips to the low color above 55% intensity, deterministically
  • both dimensions keep their natural order
  • global normalization: one scale for the whole grid

Never do this

  • rainbow color scales
  • cells without printed values
  • sorting an ordered dimension by value
  • diverging data on a sequential ramp

QA before delivering

  • every cell prints its value
  • single-hue ramp
  • dimensions in natural order
  • title names the pattern
  • source line present bottom-left

Data shape

titlestring, action title naming the pattern
eyebrowstring caps, rendered only when the DL chrome asks for it
sourcestring, rendered bottom-left, always
columnsordered dimension labels (x)
rowsarray of {label, values[] same length as columns}, ordered dimension (y)
Sample data (golden)
{
  "title": "Thursday is the heaviest delivery day in all four weeks",
  "eyebrow": "DELIVERIES . WEEKS 25-28",
  "source": "Source: sample dataset v1, 2026-07-12",
  "columns": [
    "W25",
    "W26",
    "W27",
    "W28"
  ],
  "rows": [
    {
      "label": "Mon",
      "values": [
        12,
        14,
        11,
        13
      ]
    },
    {
      "label": "Tue",
      "values": [
        18,
        16,
        17,
        19
      ]
    },
    {
      "label": "Wed",
      "values": [
        22,
        25,
        21,
        24
      ]
    },
    {
      "label": "Thu",
      "values": [
        38,
        41,
        44,
        47
      ]
    },
    {
      "label": "Fri",
      "values": [
        16,
        15,
        18,
        17
      ]
    }
  ]
}