Variance charts
The core principle, and it is violated constantly:
Plot the variance. Do not plot two lines and make the reader subtract.
Two overlaid lines show that a gap exists. A variance chart shows how big it is, which direction, and whether it is closing. The second is the question.
Bullet chart — the default for actual vs target
Compact, precise, and it replaces both the gauge and the two-bar comparison.
Revenue ▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░ │ $4.82M / $5.10M plan (5.5%) under
Gross margin ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ 76% / 75% plan +1 pt
Net burn ▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░ │ $412K / $455K plan better
└─ actual (bar) └─ target (tick)
- Bar is the actual, a perpendicular tick is the target. The tick reads as a threshold; a second bar reads as a second value.
- Optional qualitative bands behind (poor / acceptable / good) — keep them very low contrast or they compete with the data.
- One row per measure, stacked, sharing an axis where the units allow. Where they do not, give each row its own normalized scale and label the values.
- Sort by variance magnitude, not alphabetically.
Bullet charts fit a dozen measures in the space of one gauge and add the comparison. There is no case where a speedometer is the better choice.
Deviation bars
One bar per line item, drawn from a zero line, length = variance.
Best when the question is which items missed and by how much.
- Zero line is the plan, not the axis edge.
- Sort by variance so the biggest misses are adjacent and readable.
- Label with both absolute and percentage — one alone misleads. $40K on a $50K line is a catastrophe; on a $4M line it is noise.
- Consider two panels: one sorted by absolute impact, one by percentage. They rank differently and both matter.
Favourable versus unfavourable — the encoding trap
Direction is not goodness. Spend under budget is negative and good. Churn above plan is positive and bad.
Decide which the colour encodes, then be consistent and say so:
| Approach | Use when |
|---|---|
| Colour = goodness (favourable/unfavourable) | Mixed measures on one chart — the usual case for a P&L variance view |
| Colour = direction (up/down) | Every measure on the chart shares a polarity |
Either way:
- Sign or arrow carries the direction; colour reinforces (
artifact-accessibility). - Label the legend explicitly — "green = favourable", not just a colour swatch.
- Never let a reader infer polarity from the chart alone.
A revenue miss and an expense saving are both "green is good" — but they point opposite ways on the axis, and only an explicit legend prevents the misread.
Variance bands on a time series
For actual versus plan over time, plot actual as a line and the plan as a band or a reference line, shading the gap.
- Shade the gap area, colour-coded by favourability — the shaded area is the cumulative variance, which is more informative than either line.
- Mark the forecast boundary where actuals stop and projection begins. A solid line becoming dashed is the clearest convention.
- Name the plan version: "vs Plan (board approved 2026-01)". Plans get revised; an unlabelled "plan" is unreconcilable three months later.
Dumbbell chart
Two dots joined by a line, one row per category. Excellent for before/after or plan/actual across many categories.
- The line length is the variance and reads instantly.
- Sort by gap size.
- Consistent dot colours across all rows — plan always one colour, actual always the other.
- Better than a grouped bar chart above about six categories, because grouped bars force the eye to compare non-adjacent pairs.
Slope chart
Two time points, one line per entity. Shows rank change and rate of change at once.
- Label both ends directly; no legend.
- Highlight the two or three entities that matter; grey the rest. A slope chart with 40 equally weighted lines is spaghetti.
- Best for "who moved" questions — segment mix shifts, customer ranking changes.
Small-multiple BvA grid
One small panel per line item or department, each showing actual against plan over time.
- Shared scale across every panel, always. Per-panel scales make a department that missed by $2M look identical to one that missed by $20K.
- Sort panels by variance magnitude, not alphabetically.
- Keep panels small and dense — the pattern across panels is the point, not any single panel.
- One shared legend and one shared axis label, not per panel.
What to avoid
| Anti-pattern | Why |
|---|---|
| Two overlaid lines with no variance shown | Makes the reader do arithmetic; the gap is the message |
| Grouped bars for actual/plan across many categories | Non-adjacent comparison; use dumbbell |
| Percentage variance with no absolute | 340% on a tiny base is noise |
| Colour alone for favourable/unfavourable | Fails greyscale and colourblind readers |
| Unlabelled plan version | Unreconcilable later |
| A gauge | Bullet chart, always |
| Truncated axis on an additive measure | Doubles the apparent miss |
Related skills
chart-selection— choosing among thesebridge-charts— the budget-to-actual bridge, which explains why the variance existstimeseries-finance— the time dimensionchart-annotation— naming the plan version and stating the findingfinancial-tables— the variance table that usually accompanies these