Data

Data Viz That Doesn’t Suck: 5 Habits I Stole From Edward Tufte

Small, boring, opinionated tweaks that make dashboards feel premium — without touching the underlying data pipeline.

KeerthanMar 10, 20251 min read
datadesigndashboards

The plot most people ship

  • Rainbow palette
  • 3D bars
  • Chartjunk gridlines
  • No baseline
  • Legend fighting for attention

The plot Tufte would ship? A single sparkline with one number in bold.

Habit 1: Kill the axes you don't need

Most bar charts don't need an x-axis label if the categories are labeled inline. Every removed pixel raises the data-ink ratio.

Habit 2: Use color for meaning, not decoration

One accent color. One neutral. Anything else has to justify itself with data.

import matplotlib.pyplot as plt
plt.rcParams.update({
    "axes.spines.top": False,
    "axes.spines.right": False,
    "axes.grid": True,
    "grid.color": "#e5e7eb",
})

Habit 3: Annotate the punchline

If your chart needs a title and a caption and the reader's imagination, you failed. Add an arrow to the actual data point that matters.

Habit 4: Small multiples > one big chart

When comparing 6 regions, ship 6 small charts on the same scale, not one rainbow.

Habit 5: Round aggressively

23.847% is a lie about precision. 24% is the truth.

Tools I actually use

  • Recharts — sane defaults, great TypeScript support.
  • Observable Plot — for exploration.
  • Plotly — for interactive stakeholder reports.

Keep it boring, keep it truthful.