Visualizing Clinical Data

From Raw Numbers to Clear Communication

Learning Objectives

  1. Identify principles of honest data visualization
  2. Select appropriate chart types for your data and question
  3. Explain the Grammar of Graphics (ggplot2’s 7 layers)
  4. Apply Tufte’s data-ink ratio to clinical figures
  5. Recognise common graphical distortions (truncated axes, 3D effects)
  6. Design figures with accessible colour palettes
  7. Critique visualizations from published literature

Clinical Hook: The Pharma Pitch

The actual difference is 2 mmHg. The truncated axis makes it look enormous. Bar charts must start at zero.

The Grammar of Graphics

Every ggplot2 figure = 7 layers stacked together:

  1. Data — the data frame
  2. Aesthetics — x, y, colour, size
  3. Geometries — points, bars, lines
  4. Facets — panels by category
  5. Statistics — smoothers, counts
  6. Coordinates — Cartesian, polar
  7. Theme — fonts, colours, grid

Which Chart Should I Use?

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

Bar Charts: Categorical Data

Figure 1

Never Use Bar Charts for Continuous Data!

“Dynamite plots” (bar + error bar) hide the distribution. Use box/violin plots instead.

Histograms and Density Plots

Figure 2

Box Plot vs Violin: Revealing Hidden Patterns

Figure 3

Scatter Plots: Relationships

Figure 4

Tufte’s Data-Ink Ratio

Figure 6

Goal: Maximise ink that shows data. Remove everything else.

Common Graphical Distortions

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

Accessibility: Colour-Blind Palettes

Figure 7

Accessibility Checklist

  1. Use colour-blind safe palettes: viridis, cividis, okabe_ito
  2. Don’t rely on colour alone: add shapes, line types, or direct labels
  3. Ensure sufficient contrast (4.5:1 ratio minimum)
  4. Readable font sizes: ≥10pt for axis labels, ≥12pt for titles
  5. Add alt-text in Quarto: #| fig-alt: "description"
  6. Test your palette with colorblindr package

Publication-Ready Example

Key Takeaways

  1. Choose the chart for the question — bar (counts), histogram (distribution), box/violin (groups), scatter (relationship), line (trends)

  2. Grammar of Graphics = 7 swappable layers

  3. Honest axes — bar charts must start at zero; no 3D effects

  4. Data-ink ratio — remove everything that isn’t data

  5. Accessibility — viridis palette + shape/line redundancy

  6. Always plot first — Anscombe’s quartet applies to everything

Resources

Graph Galleries:

Books: