Charts / CH-MAG-03
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
Actual beats plan on four of five steps 10 days Plan 8 days Actual Document review 6 7 Duty payment 8 5 Inspection 4 3 Release 5 4 Final delivery Source: process log, June

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

titleaction title with a number
sourcebottom-left always
uniton first bar label
series_labels[name_a, name_b], printed on the first row
categoriesarray 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
      ]
    }
  ]
}