From Raw Numbers to Clear Communication
The actual difference is 2 mmHg. The truncated axis makes it look enormous. Bar charts must start at zero.
Every ggplot2 figure = 7 layers stacked together:
| Your data | Your question | Best chart |
|---|---|---|
| 1 categorical | How many in each group? | Bar chart |
| 1 continuous | Distribution shape? | Histogram / density |
| 1 categorical + 1 continuous | Groups differ? | Box / violin plot |
| 2 continuous | Relationship? | Scatter plot |
| Continuous over time | Trends? | Line chart |
| 3+ variables | Complex patterns? | Heat map / facets |
Explore: From Data to Viz | FT Visual Vocabulary
Figure 1
Never Use Bar Charts for Continuous Data!
“Dynamite plots” (bar + error bar) hide the distribution. Use box/violin plots instead.
Figure 2
Figure 3
Figure 4
Figure 5
Figure 6
Goal: Maximise ink that shows data. Remove everything else.
| Distortion | How it misleads | Fix |
|---|---|---|
| Truncated axis | Exaggerates small differences | Start bars at zero |
| Dual y-axes | False correlations | Two separate panels |
| 3D effects | Distorts heights/angles | Always use 2D |
| Area encoding | Doubling radius = 4× area | Use position or length |
| Cherry-picked range | Hides the full trend | Show full time range |
Figure 7
viridis, cividis, okabe_ito#| fig-alt: "description"colorblindr packageChoose the chart for the question — bar (counts), histogram (distribution), box/violin (groups), scatter (relationship), line (trends)
Grammar of Graphics = 7 swappable layers
Honest axes — bar charts must start at zero; no 3D effects
Data-ink ratio — remove everything that isn’t data
Accessibility — viridis palette + shape/line redundancy
Always plot first — Anscombe’s quartet applies to everything
Graph Galleries:
Books:
Biostatistics for Clinicians | Module 3