9: Perception & Design
Content for Monday, April 27, 2026
Before class
📖 Reading:
- Kang, M. (2016). Checklist: Does Your Data Visualization Say What You Think It Says?
- Rowe, S. (2022, May 24) Don’t hide the crucial findings.
- Cisneros, M. (2022, June 14). Showing off the insights vs. showing off.
- Esselman, A. (2022, June 23) Declutter a dual y-axis chart.
- Rowe, S. (2022, November 14) A diverging bar chart makeover: how to tackle the challenge of scope creep.
- Optional: Knaflic, Storytelling with Data, Ch 1–3
ImportantAssignment 3 is due today
Assignment 3: Tidying, Import & Quarto — due Sunday, April 26 at 11:59 PM.
During class
We’ll cover:
- Why perception matters — how the brain processes visual information
- Preattentive attributes: color, size, position, shape
- Gestalt principles and how they shape layout
- Color theory: sequential, diverging, and qualitative palettes
- Colorblind-friendly design (and why it matters)
- Decluttering: removing the visual noise
- Psychology-specific figures: error bars, interaction plots, raincloud plots
- Putting it all together with
theme()customization
TipAssignment 4 is assigned today
Assignment 4: Visualization Deep Dive — due Sunday, May 3 at 11:59 PM.
Slides
View slides in new tab Download PDFEmbedded slides
After class
✅ Practice:
- Take a plot you made earlier in the course. Identify 3 things that could be decluttered.
- Recreate it using only
theme_minimal()— what disappears? What stays? - Try switching your color palette to
scale_fill_viridis_d(). Does it change the story? - Create a raincloud plot (violin + boxplot + jitter) for any grouped data you have
- Make a “bad” version of a figure on purpose — violate as many design principles as you can. Then fix it.
NoteThe decluttering checklist
Before you call a figure “done,” ask:
- Is the background gray? → Switch to
theme_minimal()ortheme_classic() - Are there gridlines? → Remove them
- Is there a legend when there’s only one group? → Remove it
- Do the axis labels say something meaningful? → If not, rename them
- Can someone understand the point without reading the caption? → If not, the title needs work
Colorblind-friendly palettes
# Viridis — works for continuous and discrete
scale_fill_viridis_d() # discrete categories
scale_fill_viridis_c() # continuous values
# ColorBrewer — curated palettes
scale_fill_brewer(palette = "Set2") # qualitative
scale_fill_brewer(palette = "RdBu") # diverging
scale_fill_brewer(palette = "Blues") # sequentialThese are all built into ggplot2 — no extra packages needed.