Data Visualization
Beginner 12 min read Data Visualization

Visualization Principles

The grammar of honest charts

Charts are arguments made visible. A few rules — start axes at zero, respect data-ink ratio, encode magnitude by length — produce charts readers trust faster than any fancy rendering.

data-inkhonest axesencodinggestaltclaritydeception
Before we start

What you will learn

  • Apply data-ink and honest-axis rules
  • Match encoding to data rank (length, position, color)
  • Design for the viewer's reading order
Introduction

What is this?

Visualization principles turn raw charting into communication: encode magnitude with length and position (the most accurate), reserve color for categories moderation, start bar axes at zero, cut non-data ink, and lead the eye in reading order. Followed, they make numbers obvious; ignored, they deceive even honest data, promised.

Motivation

Why do you need it?

  • Bars with truncated axes exaggerate differences audiences mistake for scale.
  • Color chosen casually misrepresents severity and sequence.
  • Readable charts beat pretty ones in every decision meeting.
  • The principle question behind every chart is: does this encode truth proportionally?
Think about it

Mental model

Imagine

A shop scale that measures honestly

Think of

A well-built chart

The scale starts at zero and its pointer travel matches true weight — no undetectably heavy base, no pre-tensioned needle. A chart should be that scale: proportional, zero-anchored, legible at a glance.

Mechanics

How it works

  • Encode quantitative values with position/length (bars, points), not area (pies, bubbles).
  • Start bar axes at zero; use broken axes only with explicit visual breaks.
  • Cut non-data ink: gridlines behind data, chart junk, redundant labels.
  • Order categories by value (or chronology) so reading scans naturally.
  • Use color for a single purposeful role — category, magnitude, or emphasis — consistently.
  • Favor small multiples over dense single charts for honest comparisons.

Principle → chart → reader.

Ask
Encode
Axes
Ink
State
Hands-on

Examples

Two charts, one honest

Two charts, one honest
ax = data.plot.bar(y="revenue")
ax.set_ylim(0, data.revenue.max() * 1.1) # zero-anchored
ax0 = data.plot.bar(y="revenue")
ax0.set_ylim(data.revenue.max() * 0.9, data.revenue.max() * 1.02) # deceptive
# Lean: readers cannot see relative size with a truncated axis

The top chart's zeroed axis lets length encode honestly; the bottom's cut axis invents contrast that isn't there.

Real world

In production

  • A weekly revenue chart enforces ylim(0, ...) so a 3% wobble never looks like a cliff.
  • A marketing dashboard strips gridlines and orders cohorts by activation for fast scanning.
  • A risk report encodes severity with a two-color palette only — no rainbow severities.
Guidelines

Best practices

  • Default to zero-anchored bars; escalate to dots when small deltas matter, and say so.
  • One chart, one claim — split claims across panels.
  • Label directly at data points over legend-color archaeology.
  • Annotate exceptions: a call-out beats a legend for the thing that matters.
Watch out

Common mistakes

  • Pie charts for ratios among many slices — angles are hard to read.
  • Truncated y-axis to 'emphasize' a difference the data doesn't own.
  • Rainbow color mappings that imply sequence/severity at random.
  • Gridlines and decorations reducing the data to background noise.
When things break

Debugging tips

  • If a chart 'looks off', check the axis range and color encoding before the data.
  • A flat chart hiding real change → dot or log scale with an honest note.
  • When a legend is required to decode basic meaning, the encoding failed.
  • Print the same claim with two scales and ask which the eye would trust.
Interviews

Interview checkpoint

Practice

Hands-on lab

Reform an Untrustworthy Chart
25 min · beginner
In progress
Objectives
  • Spot truncated axes and mis-encoded encodings
  • Replot honestly with zero-based, sorted bars
  • Annotate the corrected claim

Reform an Untrustworthy Chart

25 min · beginner

0/3 steps
0%
sandbox · Linux sandbox
$
Try these commands
Test yourself

Quick quiz

0/2
1

The most accurate encodings for numeric magnitude are:

2

A truncated y-axis is acceptable when the difference is real.

Go deeper

Official documentation