CH-DST-05 . family DST
POPULATION PYRAMID
two mirrored bar stacks around a labeled center gutter, one row per band. Needs:
ordered bands (age, tenure, size class) with counts for two groups.
distributioncomparison
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 groups across ordered bands: age structures, tenure mixes
- asymmetry between the two sides is the message
Do not use when
- more than two groups (small multiples)
- bands without a natural order (CH-MAG-03)
See instead
Alternatives
- CH-MAG-03 (unordered categories)
- CH-DEV-03 (two-part shares)
Rules
- both sides share one zero-based scale, mirrored
- band labels live in the center gutter
- sides named above the first row, never a legend
Never do this
- different scales per side (the classic pyramid lie)
- unordered bands
- more than two sides
QA before delivering
- one shared mirrored scale
- bands in order
- sides named once
- unit once
- source present
Data shape
| title | action title naming the asymmetry |
| source | bottom-left always |
| unit | on first left value |
| series_labels | [left_name, right_name], printed above the first row |
| bands | array of {label, a, b}, ordered top band first |
Sample data (golden)
{
"title": "Staffing thins sharply above 50",
"eyebrow": "WORKFORCE BY AGE",
"source": "Source: HR register, June",
"unit": "staff",
"series_labels": [
"Women",
"Men"
],
"bands": [
{
"label": "60+",
"a": 34,
"b": 52
},
{
"label": "50-59",
"a": 86,
"b": 140
},
{
"label": "40-49",
"a": 190,
"b": 300
},
{
"label": "30-39",
"a": 270,
"b": 410
},
{
"label": "20-29",
"a": 160,
"b": 220
}
]
}