1. Lighthouse

Level 6 · Did orders really grow seventeen times?

The request

From Catherine Hale, Chief Executive Officer

“Marketing sent me a chart where the 2025 bar for orders is about seventeen times the 2024 bar. That seems too good. Is it?”

Your goal

Choose the explanation.

The chart has two bars: 4,046 orders in 2024 and 4,783 in 2025. The code ends with `ax.set_ylim(4000, 4900)`. Why does 2025 look about seventeen times bigger?

Pick one answer, then check it.

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.

Pick what may run on this site. You can change this any time from "Cookie settings" at the bottom of every page.