9: Perception & Design
Content for Monday, April 27, 2026
Before class
📖 Reading:
No required reading this session.
- Optional: Knaflic, Storytelling with Data, Ch 1–3 — a practitioner-friendly introduction to visual perception and decluttering that maps well to today’s topics.
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
- Critical evaluation: spotting misleading and ineffective figures
- 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? - Find a figure in a news article or published paper. Critique it using the decluttering checklist — what would you change?
- 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.