Charts, and the choices you did not make
A chart is an argument
Ask for a chart of your figures and you will get one, quickly, with axes and a legend and a title. It will look professional. Whether it says what is true is a separate question that the tool has no opinion about.
The problem is not that models make bad charts on purpose. It is that the defaults of every charting library encode choices, and a choice you did not make is still a choice you published.
The distortions that arrive by default
A truncated axis. Bars starting at 94 rather than 0 turn a two per cent difference into a doubling. For a bar chart the baseline must be zero, because the bar's length is what the reader is comparing. For a line chart showing change over time, a truncated axis is often legitimate — the reader is comparing slope, not length. Know which you have.
Two y-axes. Any two series can be made to look correlated by scaling their axes independently, and the reader has no way to see that the alignment was chosen. If somebody hands you a dual-axis chart showing your marketing spend tracking revenue, ask what the scales are.
A pie chart with eleven slices. People compare angles badly, and beyond about five categories a pie communicates nothing. A bar chart sorted by size communicates all of it.
Alphabetical ordering. Categories sorted by name rather than value hides the ranking, which is usually the finding.
Unequal time steps drawn evenly. Monthly points for two years then quarterly for three, plotted at equal spacing, produces a slope that does not exist.
Decide the sentence first
The reliable method, and the one that survives contact with a model:
- Write the single sentence you want the reader to leave with. "Orders fell in three of our five regions in Q3."
- Ask for a chart that makes that sentence visible.
- Read the finished chart aloud as a sentence. If what you read is not the sentence you wrote, it is the wrong chart.
Step three catches almost everything. A stacked bar showing total orders per region does not say "fell in three of five" — you have to do arithmetic in your head to find it. A small-multiple of five little line charts says it immediately.
Given a topic rather than a sentence, a model will produce the chart type most associated with that topic in its training data. That is a fashion, not an argument.
The specification worth pasting
Bar chart. Y-axis starts at zero. Categories ordered by value, descending. Value printed at the end of each bar. No gridlines, no legend — label the series directly. Title states the finding, not the subject: "Orders fell in three of five regions" rather than "Regional orders". Colour-blind-safe palette, and do not use colour as the only way to tell two series apart.
That last clause is not decoration. Around one man in twelve has some form of colour vision deficiency, and red-versus-green is the most common failure. Direct labels, different line styles or different shapes carry the same information to everybody.
Ask for the code, not the picture
If the tool can produce a chart image directly, it is often better to ask for the code that produces the chart instead.
Code is inspectable. You can see which column was plotted, what the axis limits were set to, whether a filter was applied that you did not ask for. An image tells you none of that, and a chart drawn from the wrong column is indistinguishable from a chart drawn from the right one.
Code is also reproducible: next month you change the data file and rerun it, and the chart is identical in every respect except the numbers. That is worth a great deal in any recurring report.
The free path is complete
- LibreOffice Calc and Google Sheets make every chart in this lesson, and both let you set the axis minimum by hand.
- Python with matplotlib is the standard for generated charts, free, and what a model will write for you by default. Plotly and Vega-Lite are also free if you want interactivity.
- gnuplot is free, tiny and excellent for repeated report charts.
- Datawrapper has a free tier used by newsrooms, with good defaults and colour-blind-safe palettes built in.
Nothing in this lesson requires a paid tool. What it requires is deciding the sentence before drawing the picture, and reading the picture back to check that it still says it.
The one thing to keep
Write the one sentence the reader should leave with, ask for the chart that makes it visible, then read the chart back as a sentence — and prefer generated code over a generated image, because code shows which column was actually plotted.
Before you move on
Why is asking for chart code preferable to asking for a chart image, beyond being able to rerun it next month?
Pick the one you would defend. Nobody sees your answer.