Useful Data Tips

Designing Charts for Color Blindness

⏱️ 24 sec read 📊 Data Visualization

About 8% of men and 0.5% of women have color vision deficiency. Accessible charts use color-blind friendly palettes, patterns, and labels to ensure everyone can interpret your data.

Common Types of Color Blindness

1. Deuteranomaly (Red-Green, most common):
   - Difficulty distinguishing red and green

2. Protanomaly (Red-Green):
   - Red appears darker, greener

3. Tritanomaly (Blue-Yellow, rare):
   - Difficulty with blue and yellow

4. Achromatopsia (Complete, very rare):
   - No color vision, only grayscale

Color-Blind Friendly Palettes

Python with Seaborn

import seaborn as sns
import matplotlib.pyplot as plt

# Built-in color-blind safe palette
sns.set_palette("colorblind")

# Alternative: use specific colors
colorblind_colors = ['#0173B2', '#DE8F05', '#029E73', '#CC78BC',
                     '#CA9161', '#949494', '#ECE133', '#56B4E9']

sns.set_palette(sns.color_palette(colorblind_colors))

Avoid These Combinations

# Problematic for color blindness:
# Red + Green (most common issue)
# Blue + Purple
# Green + Brown
# Green + Blue
# Light Green + Yellow

# Safe combinations:
# Blue + Orange
# Blue + Yellow
# Purple + Green
# Red + Blue

Best Practices

1. Don't Rely on Color Alone

# Bad: Only color differentiates lines
plt.plot(x, y1, color='red')
plt.plot(x, y2, color='green')

# Good: Use line styles too
plt.plot(x, y1, color='#0173B2', linestyle='-', label='Series A')
plt.plot(x, y2, color='#DE8F05', linestyle='--', label='Series B')

2. Use Patterns and Textures

# Add patterns to bars
import matplotlib.patches as mpatches

bars = plt.bar(categories, values)
bars[0].set_hatch('///')
bars[1].set_hatch('...')
bars[2].set_hatch('xxx')

3. Add Direct Labels

# Label data points directly
for i, (cat, val) in enumerate(zip(categories, values)):
    plt.text(i, val, f'{val}', ha='center', va='bottom')

Accessible Color Schemes

Viridis (Perceptually Uniform)

plt.imshow(data, cmap='viridis')
# Works for all color vision types

ColorBrewer Safe Palettes

from colorbrewer import qualitative

# Safe for color blind
safe_colors = qualitative.Set2_8
plt.bar(x, y, color=safe_colors)

Testing Your Charts

# Use simulators to test:
# 1. Coblis Color Blindness Simulator (online)
# 2. Color Oracle (free software)
# 3. Photoshop color blind preview

# Export chart, upload to simulator, check readability

Accessibility Checklist

Pro Tip: Use blue/orange combinations instead of red/green. Add direct labels and use line styles so your charts work even in grayscale. Test with Color Oracle to see how color blind users experience your visualizations!

← Back to Visualization Tips