Charts / CH-COR-02
CH-COR-02 . family COR

BUBBLE

bubble chart: scatter plus an area-coded third measure. Needs: entities with two positional measures + one size measure; under ~15 points.

correlationmagnitudeoutlier-detection

DL-01 AGRAW
System D compounds the deepest backlog with the largest budget 0 20 40 60 80 0 20 40 60 80 100% A B C D E F G H Source: sample dataset v1, 2026-07-12

Use when

  • two related measures plus a weight (budget, volume, headcount)
  • the big-and-bad quadrant story: position shows risk, size shows stake

Do not use when

  • the size measure is decorative (use CH-COR-01)
  • sizes within +/-20% of each other (area differences invisible)
  • more than ~15 bubbles (labels and circles collide)

See instead

  • the third measure adds nothing to the story: CH-COR-01

Alternatives

  • CH-COR-01 (drop the size measure)

Rules

  • bubble AREA is proportional to the size measure (radius by square root), never radius-proportional
  • what size encodes is stated in the title or eyebrow, never in a legend
  • every bubble labeled; one highlight maximum
  • all CH-COR-01 axis rules apply

Never do this

  • radius-proportional sizing (quadruples the visual weight)
  • size legends with sample circles
  • overlapping unlabeled bubble clouds
  • animating bubbles over time in a static deliverable

QA before delivering

  • area-proportional sizing verified
  • size meaning stated in text
  • every bubble labeled
  • highlight count <= 1
  • title compounds position and size with numbers
  • source line present bottom-left

Data shape

titlestring, action title naming the point where size and position compound
eyebrowstring caps, rendered only when the DL chrome asks for it
sourcestring, rendered bottom-left, always
unit_xstring appended to the max x tick
unit_ystring appended to the max y tick
pointsarray of {label, x >= 0, y >= 0, size > 0, highlight?}
Sample data (golden)
{
  "title": "System D compounds the deepest backlog with the largest budget",
  "eyebrow": "READINESS X BUDGET . WEEK 28",
  "source": "Source: sample dataset v1, 2026-07-12",
  "unit_x": "%",
  "unit_y": "",
  "points": [
    {
      "label": "A",
      "x": 92,
      "y": 12,
      "size": 30
    },
    {
      "label": "B",
      "x": 88,
      "y": 18,
      "size": 22
    },
    {
      "label": "C",
      "x": 74,
      "y": 25,
      "size": 18
    },
    {
      "label": "D",
      "x": 41,
      "y": 63,
      "size": 55,
      "highlight": true
    },
    {
      "label": "E",
      "x": 66,
      "y": 31,
      "size": 26
    },
    {
      "label": "F",
      "x": 80,
      "y": 22,
      "size": 20
    },
    {
      "label": "G",
      "x": 58,
      "y": 38,
      "size": 34
    },
    {
      "label": "H",
      "x": 70,
      "y": 26,
      "size": 24
    }
  ]
}