visualization_lecture

Color theory for data visualization — Lesson plan

Learning objectives

By the end of this lesson students will be able to:

Code in Python


Lecture outline (45–60 minutes)

1. Quick warm-up (5 min)

2. Color basics (8–10 min)

3. Types of data and palette types (10–12 min)

4. Perception and accessibility (8–10 min)

5. Common pitfalls (5 min)

6. Quick demo (5–10 min)


Practical guidelines (cheat sheet)


Example code snippets (Python)

Matplotlib — sequential and diverging maps

import matplotlib.pyplot as plt
import numpy as np

# example data
x = np.linspace(0, 10, 100)
y = np.sin(x)

# sequential colormap for a heatmap
Z = np.outer(np.sin(x), np.cos(x))
plt.figure()
plt.imshow(Z, cmap='viridis')
plt.title('Sequential: viridis')
plt.colorbar()

# diverging example
plt.figure()
plt.imshow(Z - Z.mean(), cmap='RdBu', vmin=-np.max(np.abs(Z)), vmax=np.max(np.abs(Z)))
plt.title('Diverging: RdBu (centered)')
plt.colorbar()

plt.show()

Seaborn — categorical palette and palette chooser

import seaborn as sns
import matplotlib.pyplot as plt

# categorical (qualitative)
pal = sns.color_palette('Set2')
sns.palplot(pal)
plt.title('Qualitative palette: Set2')
plt.show()

# using viridis as a seaborn palette
sns.heatmap(np.random.rand(10,10), cmap='viridis')
plt.title('heatmap with viridis')
plt.show()

Checking contrast & simulating color-blindness (notes)


Exercises / Lab ideas (45–60 minutes)

Short warm-up (10 min)

Main lab (30–40 min)

Advanced challenge (optional)


Assessment / rubric ideas


Common references & tools (names only)


Quick slide summary (for printing on one page)