The request

From Catherine Hale, Chief Executive Officer
Your goal
Choose the explanation.
What Catherine gets, and why
The lesson
A bar’s length is its value
When you look at a bar chart you compare the lengths of the bars, not the numbers on the axis. That only works if every bar starts at zero. Cut the axis and you show only the tips:
fig, (left, right) = plt.subplots(1, 2, figsize=(9, 3.5))
left.bar(["2024", "2025"], [4046, 4783])
left.set_ylim(4000, 4900) # looks like 17x growth
right.bar(["2024", "2025"], [4046, 4783])
right.set_ylim(0, 5200) # the real picture: +18%
On the left the visible bars are 46 and 783 tall. On the right you see what happened: 2025 had 18% more orders than 2024. For bar charts the rule has no exceptions: the value axis starts at zero.
Lines are different
A line chart is read by its slope and shape, not by the length of anything, so its y-axis may start elsewhere. Daily orders between 9 and 67 can use a 0 to 70 axis, but a stock price between 940 and 970 would be a flat line on a zero-based axis. When you do cut a line chart’s axis, keep the labels visible so the reader knows.
A checklist before you share a chart
- Does the chart type fit the question (time: line, compare: bars, spread: histogram, relation: scatter)?
- Does the title state the finding?
- Are both axes labeled, with units (USD, orders, %)?
- Bars: does the value axis start at zero, and are the bars sorted?
- Is there one highlight color, and are the other marks neutral?
- Could someone understand it without you in the room?
Pies, the other usual suspect
Pies mislead more quietly. With five slices of 23, 21, 20, 19 and 17%, nobody can tell which is largest, because the eye judges angles poorly. The same numbers as sorted bars are obvious. Keep pies for two to four parts of one total.
Common mistakes
ax.set_ylim(min_value, ...)on a bar chart to “make the difference visible”.- Two charts side by side with different y ranges, so equal heights mean different values. Use
plt.subplots(1, 2, sharey=True)when the reader should compare heights. - A dual y-axis with two scales chosen to make two lines cross where you want them to.
Lantern lit!
Practised: honest chartsy axis zeroset ylimchart checklist
- Solved
- No hints
- First run
