Charts /
CH-COR-05
CH-COR-05 . family COR
HEXBIN
hexagonal bins colored by point count. Needs: 50+ x,y points, too many for honest individual dots.
correlationdensity
Use when
- hundreds of points where overplotting hides the density
- finding regimes and clusters in a relationship
Do not use when
- few points (bins hide what dots would show)
- reading individual items (bins have no identity)
See instead
Alternatives
- CH-COR-01 (few enough points to draw raw)
- CH-COR-03 (categorical axes)
Rules
- binning is the published deterministic algorithm: axial rounding on pointy-top hexes
- color ramp is the deterministic background-to-high mix
- the count key (min, mid, max) is the one permitted key
- both axes zero-based
Never do this
- rainbow density ramps
- smoothed density contours sold as data
- hexbins for tiny datasets
QA before delivering
- >= 50 points
- count key present
- deterministic binning
- source present
Data shape
| title | action title naming the cluster |
| source | bottom-left always |
| unit_x | x axis unit |
| unit_y | y axis unit |
| points | [{x, y}], 50+, all >= 0 |
Sample data (golden)
{
"title": "Delays cluster in two regimes, not one",
"eyebrow": "DELAY VS BACKLOG . 120 LOTS",
"source": "Source: sample dataset v1, 2026-07-12",
"unit_x": " days",
"unit_y": " items",
"points": [
{
"x": 18,
"y": 35
},
{
"x": 18,
"y": 27
},
{
"x": 13,
"y": 28
},
{
"x": 28,
"y": 34
},
{
"x": 27,
"y": 32
},
{
"x": 23,
"y": 32
},
{
"x": 8,
"y": 38
},
{
"x": 24,
"y": 34
},
{
"x": 8,
"y": 14
},
{
"x": 14,
"y": 26
},
{
"x": 22,
"y": 30
},
{
"x": 24,
"y": 24
},
{
"x": 22,
"y": 34
},
{
"x": 15,
"y": 45
},
{
"x": 24,
"y": 41
},
{
"x": 16,
"y": 23
},
{
"x": 18,
"y": 29
},
{
"x": 24,
"y": 32
},
{
"x": 17,
"y": 21
},
{
"x": 16,
"y": 41
},
{
"x": 14,
"y": 32
},
{
"x": 23,
"y": 17
},
{
"x": 20,
"y": 42
},
{
"x": 6,
"y": 27
},
{
"x": 19,
"y": 23
},
{
"x": 23,
"y": 29
},
{
"x": 10,
"y": 37
},
{
"x": 25,
"y": 39
},
{
"x": 30,
"y": 33
},
{
"x": 21,
"y": 18
},
{
"x": 24,
"y": 24
},
{
"x": 17,
"y": 19
},
{
"x": 13,
"y": 25
},
{
"x": 29,
"y": 12
},
{
"x": 10,
"y": 32
},
{
"x": 30,
"y": 35
},
{
"x": 7,
"y": 7
},
{
"x": 23,
"y": 23
},
{
"x": 12,
"y": 39
},
{
"x": 28,
"y": 31
},
{
"x": 22,
"y": 34
},
{
"x": 31,
"y": 36
},
{
"x": 24,
"y": 35
},
{
"x": 9,
"y": 42
},
{
"x": 27,
"y": 35
},
{
"x": 6,
"y": 24
},
{
"x": 26,
"y": 14
},
{
"x": 19,
"y": 39
},
{
"x": 11,
"y": 44
},
{
"x": 24,
"y": 29
},
{
"x": 22,
"y": 36
},
{
"x": 21,
"y": 40
},
{
"x": 15,
"y": 26
},
{
"x": 27,
"y": 30
},
{
"x": 14,
"y": 39
},
{
"x": 30,
"y": 26
},
{
"x": 10,
"y": 29
},
{
"x": 19,
"y": 27
},
{
"x": 30,
"y": 21
},
{
"x": 29,
"y": 19
},
{
"x": 14,
"y": 36
},
{
"x": 28,
"y": 38
},
{
"x": 22,
"y": 31
},
{
"x": 21,
"y": 35
},
{
"x": 19,
"y": 32
},
{
"x": 24,
"y": 30
},
{
"x": 25,
"y": 35
},
{
"x": 34,
"y": 33
},
{
"x": 17,
"y": 27
},
{
"x": 20,
"y": 38
},
{
"x": 52,
"y": 64
},
{
"x": 70,
"y": 34
},
{
"x": 46,
"y": 62
},
{
"x": 58,
"y": 62
},
{
"x": 52,
"y": 67
},
{
"x": 57,
"y": 55
},
{
"x": 74,
"y": 64
},
{
"x": 51,
"y": 59
},
{
"x": 53,
"y": 59
},
{
"x": 33,
"y": 55
},
{
"x": 63,
"y": 48
},
{
"x": 54,
"y": 70
},
{
"x": 62,
"y": 75
},
{
"x": 41,
"y": 56
},
{
"x": 52,
"y": 66
},
{
"x": 64,
"y": 33
},
{
"x": 64,
"y": 46
},
{
"x": 60,
"y": 45
},
{
"x": 56,
"y": 72
},
{
"x": 54,
"y": 62
},
{
"x": 61,
"y": 61
},
{
"x": 54,
"y": 75
},
{
"x": 63,
"y": 57
},
{
"x": 77,
"y": 49
},
{
"x": 62,
"y": 57
},
{
"x": 56,
"y": 67
},
{
"x": 57,
"y": 66
},
{
"x": 43,
"y": 45
},
{
"x": 60,
"y": 50
},
{
"x": 47,
"y": 45
},
{
"x": 65,
"y": 67
},
{
"x": 67,
"y": 51
},
{
"x": 55,
"y": 49
},
{
"x": 61,
"y": 76
},
{
"x": 48,
"y": 76
},
{
"x": 63,
"y": 58
},
{
"x": 39,
"y": 74
},
{
"x": 54,
"y": 54
},
{
"x": 58,
"y": 64
},
{
"x": 67,
"y": 50
},
{
"x": 64,
"y": 75
},
{
"x": 67,
"y": 58
},
{
"x": 49,
"y": 70
},
{
"x": 56,
"y": 61
},
{
"x": 66,
"y": 57
},
{
"x": 37,
"y": 56
},
{
"x": 40,
"y": 68
},
{
"x": 58,
"y": 54
},
{
"x": 55,
"y": 68
},
{
"x": 56,
"y": 73
}
]
}