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
DL-02 KATA
DL-03 LOGOS
DL-04 SHILPA
DL-05 OBEYA
DL-06 LEX
DL-07 SAGA
DL-08 SENTINEL
DL-09 ATLAS
DL-10 BASIRA
DL-11 SUTRA
DL-12 NOROSHI
DL-13 MIZAN
DL-14 EVIDENTIA
DL-15 ABRID
DL-16 TELOS
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
| title | string, action title naming the point where size and position compound |
| eyebrow | string caps, rendered only when the DL chrome asks for it |
| source | string, rendered bottom-left, always |
| unit_x | string appended to the max x tick |
| unit_y | string appended to the max y tick |
| points | array 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
}
]
}