Two bars encode values A and B. Their pixel height is drawn from a Y-axis that runs from a chosen baseline up to a fixed top — never all the way from the true zero once the slider moves. As the baseline creeps up toward the smaller value, the same tiny numeric gap between A and B fills almost the entire vertical space, so the shorter bar collapses toward zero pixels while the taller one still reaches the top.
pixelHeight(v) = (v − baseline) / (top − baseline)
visualRatio = pixelHeight(B) / pixelHeight(A)
trueRatio = B / A
- Baseline start — where the Y-axis begins. At 0% it's an honest zero-based chart; near 99% it starts just below the smaller bar, so a 2-point gap fills the whole chart.
- Overlay honest ref — draws a faint zero-baseline version of the same two bars beside the truncated one, so you can compare the true proportions directly against the exaggerated ones.
- Deception factor — how many times more dramatic the visual difference looks than the real one. At 0% truncation it's 1.0×; it climbs without bound as the baseline approaches the smaller value.
Real-world relevance: this is one of the most common ways charts mislead — a manufacturer, a news outlet or a politician truncates the axis so a 2-percentage-point change looks like a landslide, without ever altering a single number.