Beta · in testing
Our method, on real charts

Six ways a chart can mislead, and the honest version of each.

Every fix below is tied to a named visualization principle, organized by the three questions we ask of any chart: is it the right chart for the task, does it show the data honestly, and does the encoding match the numbers? Each chart is our own reconstruction on neutral, illustrative numbers: the techniques, not anyone’s actuals.


Is it the right chart for the goal?

A chart type carries assumptions. When those assumptions don’t hold, such as parts that don’t sum to a whole, the chart misleads before a single number is read.

● Before

FY26 budget allocation

FY26 budget allocation Total budget $20.0M 40% 28% 22% 18% 10% Engineering · 40% Sales & Marketing · 28% R&D · 22% G&A · 18% Cloud infra · 10% Slices sum to 118% Illustrative data
● After

FY26 budget by function ($M)

FY26 budget by function ($M) Non-overlapping categories · parts sum to $20.0M 0 $2M $4M $6M $8M Engineering $7.0M Sales & Marketing $5.6M G&A $3.6M R&D $3.0M Cloud infra $0.8M Illustrative data
The task · right chart for the question
The slices add up to 118%. The categories overlap (R&D sits inside Engineering; cloud is counted twice), so this isn’t a real whole, and a pie hides that by forcing everything onto 360°. Define non-overlapping categories and show the dollars on a common scale. Based on a pie requiring parts that are mutually exclusive and sum to the whole, which these don’t.

Does it represent the data honestly?

Not every distortion is in the axis. Some are in what gets indexed away, or which numbers are summarized into one. The encoding can be flawless while the data does the misleading.

● Before

Revenue growth by product line

JanFebMarAprMayJun100150200250300Indexed (Jan = 100)ABCRevenue growth by product line (indexed, Jan = 100)Illustrative data
● After

ARR by product line ($K, actual)

JanJunJanJunJanJun$0$1,000$2,000$3,000$4,000A · $4.00M → $3.70M ▼$0$500$1,000$1,500B · $1.20M → $1.52M ▲$0$50$100$150$200C · $0.08M → $0.24M ▲ARR by product line ($K, actual)Illustrative data · each panel on its own zero-based $K axis
The data · honest scope
Indexing every line to 100 hides the dollars. Product A is by far the biggest, and it is the one actually shrinking ($4.0M → $3.7M), a bigger loss than C’s celebrated “300” is a gain. Show the real ARR and you see which way the money is moving. Based on rebasing to an index discarding magnitude; the dollars are what decide the story.
● Before

Average customer satisfaction by product

Average customer satisfaction by product Mean rating (1–5 stars) · target 4.0 0 1 2 3 4 5 target 4.0 4.20 Product A 4.40 Product B 3.90 Product C Illustrative data
● After

Customer satisfaction by product (rating mix)

Customer satisfaction by product (rating mix) Share of ratings · top-box = 4–5★ 0% 50% 100% 1–2★ 3★ 4–5★ (top-box) Product A 85% Product B 84% Product C 72% By top-box, A (85%) edges B (84%); the means said B won. Illustrative data
The data · honest scope
Star ratings are ordinal: the gap from 1★ to 2★ isn’t the same as 4★ to 5★. Averaging them to “4.2 vs 4.4” isn’t meaningful, and the mean hides that Product A is actually split (lots of 5★, a tail of 1★). Show the rating mix and the ranking flips: A’s top-box beats B’s. Based on the mean of an ordinal scale being undefined. Show the distribution, not a fabricated average.

Is the encoding distorting?

The axis, the color ramp: the encoding has to let the reader recover the real values. When it doesn’t, the chart lies even with honest data.

● Before

Quarterly revenue ($M)

Quarterly revenue ($M) FY26 · axis starts at 90 90 92 94 96 98 92 94 96 98 Q1 Q2 Q3 Q4 Illustrative data
● After

Quarterly revenue ($M)

Quarterly revenue ($M) FY26 · axis starts at 0 0 25 50 75 100 92 94 96 98 Q1 Q2 Q3 Q4 Illustrative data
The encoding · honest mapping
The y-axis started at 90, not 0. On a bar chart, length is the value, so a clipped baseline turns a 6-point rise into a towering one. Start bars at zero and the real story shows: steady, modest growth. Based on the most-taught distortion in visualization: a non-zero baseline on a bar chart.
● Before

Our team scales revenue

Our team scales revenue Two independent y-axes, eight quarters 2 4 6 8 ARR ($M) 20 40 60 80 Headcount 8.6 92 Q1 Q3 Q5 Q7 Illustrative data
● After

ARR and headcount over time

ARR and headcount over time Two panels, each on its own zero-based axis ARR ($M) 0 5 10 8.6 Q1 Q8 Headcount 0 50 100 92 Q1 Q8 Illustrative data
The encoding · honest mapping
Two independent y-axes can be scaled to make any two rising lines overlap, manufacturing a correlation that isn’t really there. Drop the dual axis and show each series on its own zero-based panel, and the fake lockstep disappears: they’re just two things that both grew over time. Based on dual y-axes having no fixed relationship, so their alignment is a choice the author makes, not a fact in the data.
● Before

KPI correlation matrix

1.000.820.610.740.08-0.220.821.000.780.660.05-0.180.610.781.000.490.310.120.740.660.491.00-0.12-0.350.080.050.31-0.121.000.57-0.22-0.180.12-0.350.571.00−1.0−0.50.00.51.0corr.KPI correlation matrixIllustrative data · rainbow (jet) paletteTrafficTrialsSQLsSpendDeal sizeNRRTrafficTrialsSQLsSpendDeal sizeNRR
● After

KPI correlation matrix

1.000.820.610.740.08-0.220.821.000.780.660.05-0.180.610.781.000.490.310.120.740.660.491.00-0.12-0.350.080.050.31-0.121.000.57-0.22-0.180.12-0.350.571.00−1.0−0.50.00.51.0corr.KPI correlation matrixIllustrative data · diverging scale, neutral at 0TrafficTrialsSQLsSpendDeal sizeNRRTrafficTrialsSQLsSpendDeal sizeNRR
The encoding · honest mapping
A rainbow (jet) palette isn’t ordered by brightness. Equal steps in correlation map to unequal jumps in color: zero correlation lights up bright green like a hotspot while a strong +0.8 sinks into dark red, and red/green readers can’t separate them at all. A diverging scale with a neutral midpoint at zero lets you read sign and strength at a glance: cool for negative, warm for positive, pale for near-zero. Based on the well-documented retirement of rainbow palettes in favour of perceptually uniform scales, with a diverging scale because the data is signed.

Be first to put your charts on trial.

FairCharts reviews any chart, flags what’s misleading, and hands back a corrected version, with the reasoning to defend it in the room. In beta.

Join the beta