How charts mislead (often without trying)
Imagine two analysts are handed the exact same numbers: a company's quarterly revenue, which went from $4.00M to $4.12M over a year. The first draws a chart and the boardroom gasps — revenue looks like it tripled. The second draws a chart and everyone shrugs — growth looks flat. Same data, opposite reactions. Neither analyst changed a single number. They only changed the picture.
A chart is a translation. It turns numbers into visual marks — the length of a bar, the height of a point, a patch of color — and our eyes read those marks faster than we can read a table. That speed is the whole point of data visualization: a good chart lets a truth jump out in a second. But the same speed is the danger. Every choice you make — where an axis starts, which two lines you put on the same canvas, what the colors mean — quietly steers the conclusion before the reader has thought about it.
Four scatter plots sharing the same summary statistics but showing a clean line, a curve, a straight line dragged by one outlier, and a vertical stack of points with one far-off point.
In the previous guides you learned why you must always plot, and how to choose the right chart for your question. This guide is about the third skill: drawing that chart honestly. We will walk through the classic ways charts mislead — truncated axes, dual axes, careless color — and then through the positive discipline that keeps a chart both clear and truthful, all the way to assembling charts into a dashboard.
The truncated-axis trick
Let's make the boardroom story concrete. A product sold 100 units last month and 103 this month — a real but modest 3% increase. Your manager wants the slide to feel like a triumph. The easiest trick in the world is to chop the bottom off the bar chart's vertical axis. Instead of letting the axis run from 0, you start it at 98.
Watch what happens to the bars. On a bar chart, a bar's meaning is its length: the reader compares lengths to compare quantities. With the axis starting at 0, the two bars stand 100 and 103 tall — practically the same height, which is the truth. But start the axis at 98 and the drawn parts become just 2 and 5 units tall. Now the second bar is two-and-a-half times the height of the first. A 3% change has been redrawn to look like a 150% leap.
There is a simple way to put a number on this distortion. The statistician Edward Tufte called it the lie factor: how big the change looks in the picture, divided by how big the change really is in the data.
An honest chart has a lie factor near 1. Much above 1 means the picture exaggerates; much below 1 means it hides a real effect.
Plug in our bars. The picture shows the second bar growing 150% taller than the first; the data grew 3%. The lie factor is about 150% ÷ 3% = 50. The chart exaggerates the change by roughly fifty times. That is not a rounding quibble — it is the difference between “meh” and “ship it.”
import matplotlib.pyplot as plt
months = ['Last month', 'This month']
units = [100, 103]
fig, ax = plt.subplots()
ax.bar(months, units)
ax.set_ylim(0, None) # force the bar axis to start at zero
ax.set_ylabel('Units sold')
plt.show()- Bars and areas: start the value axis at zero, always — their length is the message.
- Lines and points: a non-zero baseline is allowed, but label the range and don't crop just to amplify a wiggle.
- Keep one consistent scale across charts you want readers to compare side by side.
- Never reverse or break an axis (a hidden gap in the scale) without a loud visual mark and a note.
Truncated and broken axes are the single most common way a chart lies, precisely because they feel like a harmless “zoom in.” Whenever you see a dramatic bar chart, the first thing to check is where the axis starts — see misleading axes for the full rogues' gallery.
Dual axes and false correlations
Here is a different trick, and this one fools even the person making the chart. Over a summer, two things rise together: ice-cream sales and the number of drownings at the beach. Put both on one line chart — ice cream on a left vertical axis, drownings on a right vertical axis — and the two lines climb in near-perfect lockstep. The chart whispers a story: ice cream is dangerous.
It isn't, of course. A third thing — hot weather — drives both: heat sends people to buy ice cream and to swim in the sea, where some drown. Weather is a confounder, a common cause sitting behind both lines. The chart didn't measure any causal link; it just placed two summer-shaped curves next to each other.
That freedom is the real problem with a dual axis. Because the left and right scales are unrelated, you can slide one up or down until the lines overlap, and a reader has no way to see you did it. Honest alternatives almost always exist. If the two series share units, plot them on one shared axis. If they don't, draw two stacked charts that share the same time axis — a pair of small multiples — so the reader compares shapes, not your arbitrary scaling.
A related honesty question is the scale itself. When a quantity spans huge ranges — city populations from a thousand to twenty million, or visits across web pages — a plain linear axis crushes the small values into the floor and only the giants are visible. A logarithmic scale, where each step multiplies rather than adds, can reveal the full range fairly. But a log scale is also easy to misread, so always label it as logarithmic and remember that equal visual distances now mean equal ratios, not equal amounts.
Several distribution shapes drawn as histograms: a symmetric bell, a right-skewed long tail, and a flat uniform band.
Color: hue, scales, and colorblindness
Color is the most abused channel in charting, partly because it is so easy to add and so tempting to make “pretty.” Step one to using it honestly is to know that color does three different jobs, and each wants a different kind of color scale.
- Categorical (qualitative): distinct hues for unordered groups — red, blue, green for three product lines. Use only a handful; beyond about seven, colors blur together.
- Sequential: one hue from light to dark for an ordered magnitude — pale to deep blue for low to high rainfall.
- Diverging: two hues meeting at a meaningful midpoint — blue through white to red for below, at, and above a target.
A common mistake is the rainbow (“jet”) scale for ordered data. It looks vivid, but our eyes don't perceive its colors as evenly spaced, so it invents sharp boundaries where the data is smooth and hides real jumps elsewhere. Perceptually uniform scales — viridis is the well-known one — fix this: equal steps in the data look like equal steps in color.
Then there is your audience's eyes. Roughly 1 in 12 men (and about 1 in 200 women) has some red-green color vision deficiency. If the only difference between your “up” line and your “down” line is red versus green, a sizeable slice of readers sees two identical gray lines. The cure is redundancy: never let color be the sole carrier of meaning. Add direct labels, different shapes or dash patterns, or position, so the chart still works in grayscale.
import seaborn as sns
# A palette designed to stay distinguishable for color-blind readers
sns.set_palette('colorblind')
# Belt and braces: also vary the marker shape, not just the color
sns.scatterplot(data=df, x='price', y='sales',
hue='region', style='region')Color is just one channel of visual encoding; position and length are read more accurately, so reserve color for secondary distinctions and let position carry the main comparison.
The data-ink ratio: remove to reveal
Once a chart is accurate, the next job is to make it clear — and clarity usually comes from removing, not adding. Edward Tufte named the idea the data-ink ratio: of all the ink (or pixels) in a chart, what fraction is actually showing data, versus decoration?
Push this ratio toward 1 — within reason. Every drop of ink that isn't carrying information is a small tax on the reader's attention.
The clutter Tufte called chartjunk is everywhere: heavy gridlines, dark borders around every bar, drop shadows, faux-3D effects that tilt and distort the very lengths we're trying to compare, redundant legends, and busy backgrounds. None of it adds information; all of it competes with the data for the reader's eye.
- Delete 3D, shadows, and gradients — they distort lengths and add nothing.
- Lighten or remove gridlines; if you keep them, make them faint gray behind the data.
- Drop the legend when you can label each series directly on the chart.
- Sort categories by value (not alphabetically) unless the order has its own meaning.
- Round numbers in labels to the precision a reader can actually use.
The discipline behind all of this is the data-ink ratio: when in doubt, take something away and see whether the message got clearer.
Labeling and annotation that guides the eye
A clean, accurate chart still fails if the reader has to guess what it means. The most underused tool in visualization is plain words placed on the chart. Start with the title. A title like “Revenue” wastes the most valuable line of text on the screen. A title that states the takeaway — “Revenue grew 3% in Q4, the slowest quarter this year” — tells readers what to look for and what you concluded, honestly and up front.
Next, prefer direct labels over a legend. A legend forces the reader's eye to bounce between a color key and the lines, holding a color-to-name mapping in their head. Writing each line's name at its right-hand end removes that work entirely. Likewise, label the axes with units — “Revenue (USD millions)”, not just “Revenue” — because a number without a unit is not yet information.
Finally, annotate the one thing that matters. If a line spikes the week you changed the price, draw a small note right there: “price increase, Mar 3.” Annotation is where you, the analyst, guide the reader's eye to the point — and being explicit is more honest than hoping they notice, and far more honest than redrawing the axis to force them to.
From single charts to dashboards
A dashboard is just many charts on one screen, meant to be watched over time — but “many charts” multiplies every habit in this guide, good or bad. The organizing rule is one question per chart. Each panel should answer a single, clear question — “how many sign-ups this week?”, “is the checkout error rate within bounds?” — and if you can't name the question a chart answers, it doesn't belong on the dashboard.
A decision map from the question you want to answer — comparison, trend, relationship, distribution, composition — to the chart type that fits it.
- Put the single most important chart top-left, where eyes land first.
- Use the same scale and the same colors for the same metric across every panel.
- Show context: a target line, the previous period, or a normal range, so a number means something.
- Resist sprawl — a dashboard nobody can read at a glance is just a wall of numbers.
That is the whole discipline of honest, clear charts. Let the data set the axis, especially the zero baseline for bars. Be deeply suspicious of dual axes, and never read two lined-up curves as cause. Use color in the three honest ways, and make the chart survive in grayscale. Spend ink on data, not decoration — but keep the context that helps. Say the takeaway in the title, label directly, annotate the point. Charts are arguments made of ink; this guide is how you make the argument both persuasive and true.
One last habit ties the visualization track together: the charts that persuade an audience grow out of the messy charts you draw for yourself. Plotting first to understand — exploratory data analysis — is what earns you the right to a confident, honest final chart. Draw a hundred rough plots for your own eyes; then polish the two that tell the truth most clearly.