Chapter 12: Key Takeaways - Fundamentals of Sports Data Visualization
Quick Reference Guide
The Core Principle
Visualization is communication, not decoration. Every visual element should serve the goal of helping your audience understand the data and make better decisions.
1. Visual Perception Hierarchy
Pre-Attentive Attributes (Ranked by Accuracy)
- Position along a common scale - Most accurate
- Length of aligned elements
- Angle/Slope of lines
- Area of shapes
- Color saturation - Least accurate
Rule of Thumb
Use position for your most important comparisons. Reserve color for categorical distinctions or highlighting.
2. Chart Type Selection Guide
One-Page Decision Framework
| Your Question | Chart Type | Example |
|---|---|---|
| How do categories compare? | Bar chart | Team EPA comparison |
| How did values change over time? | Line chart | Weekly performance trend |
| Is there a relationship? | Scatter plot | Recruiting rank vs. wins |
| What's the distribution? | Histogram/Density | EPA distribution |
| What's the composition? | Stacked bar (not pie) | Play type breakdown |
| How do entities compare on multiple metrics? | Radar chart | Player profiles |
| How did ranks change? | Bump chart | Weekly power rankings |
Charts to Avoid
- Pie charts: Human perception of angles is poor
- 3D effects: Distort data, add no information
- Dual y-axes: Confuse relationships
- Decorative elements: Reduce data-ink ratio
3. Color Guidelines
Semantic Color Scheme
PERFORMANCE_COLORS = {
'positive': '#2a9d8f', # Teal/Green - good performance
'negative': '#e76f51', # Coral/Red - poor performance
'neutral': '#e9c46a', # Yellow - average
'reference': '#adb5bd', # Gray - benchmarks/context
}
Colorblind-Safe Palette
ACCESSIBLE_COLORS = [
'#0077BB', # Blue
'#EE7733', # Orange
'#009988', # Teal
'#CC3311', # Red
'#33BBEE', # Cyan
'#EE3377', # Magenta
]
Color Rules
- Never rely on color alone - add shape, pattern, or labels
- Use diverging schemes for data with meaningful midpoint (EPA at 0)
- Use sequential schemes for magnitude (more → darker)
- Test with colorblindness simulators before publishing
- Ensure sufficient contrast (4.5:1 minimum for text)
4. Typography Standards
Hierarchy
| Element | Size | Weight | Use |
|---|---|---|---|
| Dashboard Title | 20-24pt | Bold | Once per view |
| Section Header | 16-18pt | Semi-bold | Major sections |
| Chart Title | 12-14pt | Semi-bold | Each chart |
| Axis Labels | 10-12pt | Regular | Axes and legends |
| Data Labels | 9-11pt | Regular | Point annotations |
| Footnotes | 8-9pt | Regular | Sources, caveats |
Font Recommendations
- Screen: Open Sans, Roboto, Inter
- Print: Helvetica, Arial, Source Sans Pro
- Data-heavy: IBM Plex Sans, Fira Sans
5. Audience-Specific Design
Quick Reference Matrix
| Audience | Time Available | Density | Priority |
|---|---|---|---|
| Head Coach | <60 seconds | Low | Actionable insights |
| Coordinators | 5-10 minutes | Medium-High | Situational detail |
| QC Staff | 30+ minutes | High | Complete data |
| Executives | 2-3 minutes | Low-Medium | Business implications |
| Fans | 2-5 seconds | Very Low | Engagement |
| Broadcast | 5-8 seconds | Very Low | Quick comprehension |
Design Adaptations by Audience
Coaches (In-Game) - Maximum 3-5 metrics per view - Large text (readable at 10 feet) - Color-coded alerts - One-tap drill-down
Executives - Lead with conclusions - Context through benchmarks - ROI emphasis - Simple visualizations
Fans - Emotional hooks - Team branding prominent - Call to action - Mobile-first
6. Dashboard Layout Patterns
The F-Pattern
Users scan left-to-right, then down. Place: - Top-left: Most important KPIs - Top-right: Secondary metrics - Below fold: Supporting detail
Information Hierarchy
- Executive Summary: 4-6 KPI cards
- Key Trends: 2-3 primary visualizations
- Supporting Detail: Expandable sections
- Raw Data: Available on demand
Layout Grid
┌─────────────┬─────────────┬─────────────┐
│ KPI 1 │ KPI 2 │ KPI 3 │ ← Quick read
├─────────────┴─────────────┼─────────────┤
│ Primary Chart │ Context │ ← Main story
├───────────────────────────┼─────────────┤
│ Secondary Chart │ Filters │ ← Detail
└───────────────────────────┴─────────────┘
7. Data-Ink Ratio Checklist
Remove Unless Essential
- [ ] Background colors
- [ ] Heavy gridlines
- [ ] Redundant labels
- [ ] Decorative borders
- [ ] 3D effects
- [ ] Legend boxes (use direct labeling)
Keep These
- [ ] Axis labels with units
- [ ] Data point labels (when space permits)
- [ ] Reference lines (averages, thresholds)
- [ ] Source attribution
- [ ] Clear titles
8. Common Mistakes to Avoid
The "More is Better" Trap
Problem: Including every available metric Solution: Ask "What decision does this help make?" If none, remove it.
The "Pretty First" Trap
Problem: Choosing charts for aesthetics over function Solution: Start with the question, then find the simplest chart that answers it.
The "One Size Fits All" Trap
Problem: Same visualization for all audiences Solution: Create audience-specific views of the same underlying data.
The "Default Settings" Trap
Problem: Accepting software defaults for colors, fonts, etc. Solution: Build a custom style guide and apply it consistently.
9. Quick Code Templates
Standard Plot Setup
import matplotlib.pyplot as plt
def setup_plot(title, figsize=(10, 6)):
"""Standard plot configuration."""
fig, ax = plt.subplots(figsize=figsize)
# Clean style
ax.spines['top'].set_visible(False)
ax.spines['right'].set_visible(False)
# Typography
ax.set_title(title, fontsize=14, fontweight='bold', pad=10)
return fig, ax
Color Application
def performance_color(value, threshold=0):
"""Return appropriate color based on value."""
if value > threshold:
return '#2a9d8f' # Positive
elif value < threshold:
return '#e76f51' # Negative
else:
return '#adb5bd' # Neutral
Save for Different Outputs
def save_visualization(fig, name):
"""Save visualization for different outputs."""
# Screen (web/presentation)
fig.savefig(f'{name}_screen.png', dpi=150, bbox_inches='tight')
# Print (reports)
fig.savefig(f'{name}_print.png', dpi=300, bbox_inches='tight')
# Vector (publication)
fig.savefig(f'{name}.svg', bbox_inches='tight')
10. Pre-Publication Checklist
Before Sharing Any Visualization
Content - [ ] Title clearly states what the visualization shows - [ ] All axes are labeled with units - [ ] Data source is attributed - [ ] Time period is specified - [ ] Sample size noted where relevant
Accessibility - [ ] Passes colorblind simulation test - [ ] Text meets contrast requirements - [ ] Can be understood in grayscale - [ ] Screen reader friendly (alt text)
Accuracy - [ ] Y-axis starts at appropriate value - [ ] No misleading truncation - [ ] Scale is consistent - [ ] Numbers verified against source
Polish - [ ] Consistent typography - [ ] Aligned elements - [ ] No typos - [ ] Proper resolution for output medium
Formulas and Benchmarks Reference
Cognitive Load Guidelines
- Working Memory Limit: 7 ± 2 items
- Maximum Categories: 5-7 distinct colors
- Recommended Metrics per View: 4-6 for executives, 10-15 for analysts
Typography Contrast
- Minimum Ratio: 4.5:1 for normal text
- Large Text (18pt+): 3:1 acceptable
- Test Tool: WebAIM Contrast Checker
File Specifications
| Output | Resolution | Format |
|---|---|---|
| Web | 72-150 DPI | PNG, SVG |
| Presentation | 150 DPI | PNG |
| 300 DPI | PNG, PDF | |
| Publication | 300+ DPI | TIFF, EPS |
Essential Resources
Tools
- Color: ColorBrewer, Coolors, Viz Palette
- Testing: Coblis (colorblind simulator)
- Contrast: WebAIM Contrast Checker
- Fonts: Google Fonts
Libraries
# Core visualization
import matplotlib.pyplot as plt
import seaborn as sns
# Configuration
plt.style.use('seaborn-v0_8-whitegrid')
sns.set_palette('colorblind')
Recommended Reading
- The Visual Display of Quantitative Information - Tufte
- Storytelling with Data - Knaflic
- Information Dashboard Design - Few
Chapter Summary in One Sentence
Design visualizations by understanding your audience's constraints and questions first, then select the simplest chart that accurately answers those questions using accessible colors and clear typography.