# Chart Selection

> Choose the right chart for a financial question - a decision table from question to form, the comparison-type heuristic, when a table or a single number beats any chart, and the substitutes for forms that mislead. Start here before building any chart. Trigger on "what chart should I use", "how do I show this", "best way to visualize", "pie or bar", "which chart type", "chart for", "visualize this data".

- Skill: `lukehle/chart-selection` (Agent Skill)
- Install (CLI): `npx skillmds@latest add lukehle/chart-selection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/lukehle/chart-selection/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Lukehle (https://skillmd.com/u/lukehle)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/lukehle/chart-selection

---


# Chart selection

Start from the **question**, never from the data shape. "I have a time series" leads to a line chart;
"is our burn accelerating?" leads to a much better one.

The strongest move in this whole skill: **often the answer is not a chart.** One number with a
comparison, or a well-set table, beats a chart for a great many financial questions.

---

## Decide by comparison type

Almost every financial question is one of these. Find the row, take the form.

| The question is about… | Form | Notes |
|---|---|---|
| **How we got from A to B** | **Waterfall / bridge** | The most under-used and most valuable financial chart. `bridge-charts` |
| Change over time | Line (continuous), column (discrete periods) | Zero baseline for additive measures |
| Actual vs a target | Bullet chart, or a variance bar | Plot the *variance*, not two lines to subtract. `variance-charts` |
| Ranking | Horizontal bar, sorted by value | Never alphabetical unless lookup is the job |
| Part of a whole, **once** | Stacked bar (single), or a table | Not a pie beyond ~3 slices |
| Part of a whole, **over time** | Stacked area, or 100% stacked column | Only the bottom band is reliably comparable |
| Composition across two dimensions | Marimekko | Width and height both encode. `flow-charts` |
| Movement between states | Sankey | Cash flow, customer movement. `flow-charts` |
| Retention / decay by group | Cohort heatmap or curves | `cohort-charts` |
| Relationship between two measures | Scatter | Add a trend line only if you can defend it |
| Distribution / spread | Histogram, box plot | Aging buckets are a histogram |
| Forecast uncertainty | Fan chart / scenario bands | Never a single confident line. `uncertainty-charts` |
| Which input matters most | Tornado | `uncertainty-charts` |
| Many entities, same metric | Small multiples | Shared scale across every panel |
| Precise values people will read off | **Table** | `financial-tables` |
| A single fact | **One big number + comparison** | No chart at all |

---

## The five most common finance questions, answered

**"Why did ARR move?"** → ARR bridge. New / expansion / contraction / churn. Nothing else shows the
composition of a net change.

**"Are we hitting plan?"** → Bullet chart or variance bars, one row per line item. Not two lines on a
time series that the reader has to subtract mentally.

**"Is our retention improving?"** → Cohort heatmap for the pattern, plus retention curves by cohort
for the trend. Report both logo and revenue.

**"How long is the runway?"** → Cash line with the projection forward on two burn scenarios, and the
zero-cash **date** marked. Not a KPI tile saying "14 months".

**"Where is the money going?"** → Ranked horizontal bars for the period, plus a bridge if the
question is really about the *change* in spend. Those are different questions and get different
charts.

---

## When not to chart

| Situation | Do this instead |
|---|---|
| One number matters | A big number with its comparison and verdict |
| Under ~5 data points | A table or a sentence — a 4-bar chart is decoration |
| People will read off exact values | A table with tabular figures |
| Every value is roughly equal | Say so; a chart of near-identical bars conveys nothing |
| The comparison is categorical with no order | A sorted list |
| You cannot state the takeaway in a sentence | You do not yet know what the chart is for |

That last one is the real test. **If you cannot write the caption, do not build the chart.** See
`chart-annotation`.

---

## Forms that mislead, and their substitutes

| Instead of | Use | Because |
|---|---|---|
| Pie with 6 slices | Sorted horizontal bars | Angles are not comparable; order is invisible |
| Donut with a number inside | The number | The ring is decoration |
| Dual-axis line | Indexed series, or two stacked panels sharing an x-axis | The crossover is an artifact of two arbitrary scales |
| Gauge / speedometer | Bullet chart | Same job, a tenth of the space, adds the comparison |
| 3D anything | The 2D version | Perspective distorts area |
| Radar / spider | Small multiples, or a table | Axis order changes the shape and the impression |
| Stacked bars for comparing middle bands | Small multiples, or a line per series | Only the bottom band shares a baseline |
| Word cloud | A ranked table | Area encodes nothing reliably |
| Treemap for change | Bridge or bars | Treemaps show composition, not movement |
| Bubble chart where area is the point | Position-encoded scatter | Area is judged as roughly its square root |

---

## Scale and baseline decisions

- **Zero baseline for additive measures**: revenue, ARR, cash, headcount, expenses. Truncating one
  doubles the apparent size of a small change.
- **Truncation is acceptable for rates and ratios** — NRR, margin %, growth % — where zero is not
  meaningful. Say so in the axis label.
- **Log scale for compounding across orders of magnitude**, and only then. Label it clearly; most
  readers will not notice otherwise.
- **Shared scale across small multiples**, always. Per-panel scales make panels look similar when
  they are not.

---

## Sequence for building any chart

1. **Write the question.**
2. **Write the expected takeaway** in one sentence. If you cannot, stop.
3. Pick the comparison type → the form, from the table above.
4. Choose the baseline and scale.
5. Decide the encodings, and give every colour a second encoding (`artifact-accessibility`).
6. Write the **takeaway title** — the finding, not the subject (`chart-annotation`).
7. Add provenance: as-of, source, period status.
8. Build it (`svg-charting`).
9. Verify: greyscale, both themes, narrow width, and — for a bridge — that it foots.

---

## Related skills

- `bridge-charts`, `cohort-charts`, `variance-charts`, `timeseries-finance`,
  `uncertainty-charts`, `flow-charts`, `financial-tables` — the forms in depth
- `chart-annotation` — titles, labels, provenance
- `svg-charting` — building it
- `ui-antipatterns` — the misleading forms in more detail

