CH-MAG-03 . family MAG
PAIRED BAR
two horizontal bars per category on one shared scale. Needs:
categories in a natural order with two comparable measures each.
magnitudecomparison
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 measures per category with long labels (plan vs actual, A vs B)
- natural category order that must be kept (process steps, stages)
Do not use when
- ranking is the message (sort and use CH-RNK-01)
- before/after change (CH-DEV-02)
- more than 7 categories (pairs blur)
See instead
- the gap between the two measures is the story: CH-DST-02
- labels are short and periods few: CH-MAG-02
Alternatives
- CH-MAG-02 (vertical pairs for short labels)
- CH-DST-02 (dots when the gap is the story)
Rules
- input order kept: magnitude, not ranking
- series named on the first row labels, never a legend
- series_a muted, series_b primary
- shared zero-based scale for both measures
Never do this
- legends
- two different scales
- sorting away a natural order
- more than two bars per category
QA before delivering
- exactly two bars per row
- series named on first row
- unit once
- source present
Data shape
| title | action title with a number |
| source | bottom-left always |
| unit | on first bar label |
| series_labels | [name_a, name_b], printed on the first row |
| categories | array of {label, values: [a, b]}, input order kept |
Sample data (golden)
{
"title": "Actual beats plan on four of five steps",
"eyebrow": "CLEARANCE STEPS",
"source": "Source: process log, June",
"unit": "days",
"series_labels": [
"Plan",
"Actual"
],
"categories": [
{
"label": "Document review",
"values": [
10,
8
]
},
{
"label": "Duty payment",
"values": [
6,
7
]
},
{
"label": "Inspection",
"values": [
8,
5
]
},
{
"label": "Release",
"values": [
4,
3
]
},
{
"label": "Final delivery",
"values": [
5,
4
]
}
]
}