Contents

Chapter 1

Chart Selection Decision Guide

Pick the right chart type based on what you're trying to communicate. This guide covers the 90% case — when in doubt, use a bar chart.


The Decision Framework

Ask yourself: "What relationship am I showing?"

RelationshipChart TypeWhen to Use
Comparison (this vs that)Bar chart (horizontal)Comparing categories with long labels
Comparison (this vs that)Bar chart (vertical)Comparing categories with short labels
Comparison (part of whole)Stacked bar (100%)Showing composition across categories
Trend (change over time)Line chartContinuous time series, 2+ periods
Trend (discrete periods)Column chartMonthly/quarterly comparisons
DistributionHistogramUnderstanding data spread
DistributionBox plotComparing distributions across groups
CorrelationScatter plotRelationship between two continuous variables
Composition (static)Stacked barParts of a whole at one point in time
Composition (over time)Area chart (stacked)How parts change over time
GeographicChoropleth mapValue varies by region
FlowSankey diagramMovement between stages
RankingHorizontal bar (sorted)Top N / Bottom N
KPI StatusBullet chartActual vs target with qualitative ranges
Single ValueKPI cardOne number that tells the story

Decision Tree

What are you showing?
│
├─ A single important number?
│  └─ KPI CARD with trend indicator
│
├─ How something changes over time?
│  ├─ Continuous (daily/hourly)? → LINE CHART
│  ├─ Discrete periods (monthly)? → COLUMN CHART
│  └─ Cumulative? → AREA CHART
│
├─ Comparison between categories?
│  ├─ How many categories?
│  │  ├─ 2-5 → GROUPED BAR CHART
│  │  ├─ 6-15 → HORIZONTAL BAR (sorted)
│  │  └─ 15+ → TABLE or TOP-N BAR
│  └─ Part of a whole?
│     ├─ 2-4 parts → DONUT CHART (only exception to no-pie rule)
│     └─ 5+ parts → STACKED BAR (100%)
│
├─ Distribution of values?
│  ├─ One variable? → HISTOGRAM
│  ├─ Compare distributions? → BOX PLOT
│  └─ Density estimation? → VIOLIN PLOT
│
├─ Relationship between variables?
│  ├─ Two continuous? → SCATTER PLOT
│  ├─ Add a third via size? → BUBBLE CHART
│  └─ Many variables? → HEATMAP MATRIX
│
├─ Geographic data?
│  ├─ Regional aggregates? → CHOROPLETH MAP
│  ├─ Point locations? → SYMBOL MAP
│  └─ Routes/flows? → FLOW MAP
│
└─ Progress toward goal?
   ├─ Single metric vs target? → BULLET CHART
   └─ Multiple metrics vs targets? → TABLE with conditional formatting

Chart-Specific Guidelines

Line Charts

  • Maximum 5-7 lines before it becomes unreadable
  • Always include zero baseline for rate/percentage metrics
  • Use solid lines for primary, dashed for comparison/forecast
  • Mark significant events with vertical annotation lines
  • Show confidence intervals as shaded bands

Bar Charts

  • Sort by value (not alphabetical) unless there's a natural order
  • Horizontal bars for labels longer than 10 characters
  • Space between bars = 40-50% of bar width
  • Use a single color unless encoding an additional dimension
  • Always start axis at zero (unlike line charts, truncating bars is deceptive)

KPI Cards

Anatomy of a good KPI card:

┌─────────────────────────────┐
│  Revenue (MTD)              │  ← Label + time period
│  $2.4M                      │  ← Big number
│  ▲ 12% vs last month        │  ← Trend with comparison
│  Target: $2.8M              │  ← Context
└─────────────────────────────┘

Tables

  • Use tables for detail/lookup, never as the primary visualization
  • Right-align numbers, left-align text
  • Add conditional formatting (data bars, color scales) for quick scanning
  • Limit to 7-10 columns visible at once
  • Include sorting and searching

Scatter Plots

  • Always label axes clearly (not just field names)
  • Add quadrant lines when showing 2x2 framework (high/low segmentation)
  • Use size encoding sparingly (humans are bad at comparing areas)
  • Color-encode a categorical dimension (max 5-7 categories)
  • Add a trend line if showing correlation

Heatmaps

  • Use sequential color scale for one-direction data (light → dark)
  • Use diverging color scale for data with a meaningful center (red → white → green)
  • Sort both axes meaningfully (not alphabetical)
  • Include the actual values as text labels if cells are large enough

Color Usage by Chart Type

Chart TypeColor Strategy
Single series line/barOne brand color
Multi-series lineDistinct categorical palette (max 7)
Comparison (actual vs target)Blue (actual) + Gray (target)
Good/bad encodingGreen/Red with pattern backup
Sequential dataSingle-hue gradient (light → dark)
Diverging dataTwo-hue gradient (red ← gray → blue)

Common Mistakes by Chart Type

Pie Charts (Almost Always Wrong)

  • Problem: Humans cannot accurately compare arc angles or areas
  • Exception: Showing 2-3 parts where one dominates (75%/25% split)
  • Alternative: Horizontal bar chart, always

Dual-Axis Charts

  • Problem: Implies correlation between unrelated metrics; scale manipulation
  • When acceptable: Same unit, related metrics (revenue + cost → profit context)
  • Alternative: Two charts stacked vertically, aligned on x-axis

Stacked Area Charts

  • Problem: Inner bands are hard to read because they don't share a flat baseline
  • When acceptable: Showing total composition over time where total matters
  • Alternative: Small multiples (one line chart per category)

Treemaps

  • Problem: Hard to compare rectangles of similar size; no natural reading order
  • When acceptable: Showing hierarchical part-of-whole with 2+ levels
  • Alternative: Sunburst diagram or nested horizontal bars

Dashboard Layout Patterns

Pattern 1: KPI + Trend + Detail (Most Common)

┌──────────┬──────────┬──────────┬──────────┐
│  KPI 1   │  KPI 2   │  KPI 3   │  KPI 4   │  ← Status row
├──────────┴──────────┴──────────┴──────────┤
│                                            │
│           Main Trend Chart                 │  ← Analysis
│                                            │
├─────────────────────┬──────────────────────┤
│  Breakdown Chart 1  │  Breakdown Chart 2   │  ← Detail
├─────────────────────┴──────────────────────┤
│              Detail Table                   │  ← Export
└────────────────────────────────────────────┘

Pattern 2: Comparison Layout

┌──────────────────────┬─────────────────────┐
│   Current Period     │   Previous Period    │  ← Side by side
├──────────────────────┴─────────────────────┤
│              Variance Chart                  │  ← What changed
├────────────────────────────────────────────┤
│              Top Movers Table               │  ← Biggest changes
└────────────────────────────────────────────┘

Pattern 3: Funnel / Journey Layout

┌────────────────────────────────────────────┐
│              Funnel Visualization           │  ← The flow
├────────────┬───────────────┬───────────────┤
│  Stage 1   │   Stage 2     │   Stage 3     │  ← Stage details
│  Metrics   │   Metrics     │   Metrics     │
├────────────┴───────────────┴───────────────┤
│           Drop-Off Analysis                 │  ← Where we lose them
└────────────────────────────────────────────┘

Pattern 4: Geographic Layout

┌─────────────────────────┬──────────────────┐
│                         │  Region KPIs     │
│       Map               │  ┌────────────┐  │
│                         │  │ North: $2M  │  │
│                         │  │ South: $1M  │  │
│                         │  └────────────┘  │
├─────────────────────────┴──────────────────┤
│           Regional Trend Chart              │
└────────────────────────────────────────────┘

Tool-Specific Recommendations

Tableau

  • Use container-based layouts for responsive behavior
  • Leverage parameter actions for interactivity without separate filter controls
  • Small multiples via row/column shelves, not duplicated worksheets
  • Use Level of Detail (LOD) expressions instead of table calculations when possible

Looker

  • Single-value tiles for KPIs with value_format for readability
  • Use listen filters to link tiles, not cross-filtering
  • Merged results for combining explores in one tile
  • Dashboard-level filters with required_fields for performance

Power BI

  • Use bookmarks for guided navigation between views
  • Sync slicers across pages for consistent filtering experience
  • Custom tooltips for progressive disclosure on hover
  • Field parameters for user-controlled measure switching
Chapter 2

Dashboard Design Principles

A field-tested framework for building dashboards that people actually use. These principles apply regardless of tool (Tableau, Looker, Power BI) or domain.


Principle 1: One Dashboard, One Question

Every dashboard must have a single primary question it answers. If you can't state that question in one sentence, your dashboard is trying to do too much.

Good primary questions:

  • "Are we on track to hit this quarter's revenue target?"
  • "Which marketing channels are delivering qualified leads efficiently?"
  • "Where are users dropping off in the onboarding flow?"

Bad primary questions:

  • "How is the business doing?" (too broad)
  • "What happened?" (too vague)

Implementation

Place the answer to the primary question in the top-left quadrant of the dashboard. This is where the eye lands first (F-pattern reading). Use a large KPI card or a single trend line with a clear up/down indicator.


Principle 2: The 5-Second Rule

A viewer should understand the dashboard's main message within 5 seconds of looking at it. This means:

ElementMaximum Count
KPI cards in the header row4-6
Charts visible without scrolling3-4
Filters visible at once3-5
Colors used for encoding5-7

The Hierarchy of Visual Weight

1. BIG NUMBERS (KPI cards)      → Instant comprehension
2. Trend lines                   → Direction and velocity
3. Bar charts                    → Comparison
4. Tables                        → Detail (put below the fold)

Place elements in this order from top to bottom. Heavy-reading elements (tables, detailed breakdowns) go below the fold.


Principle 3: Progressive Disclosure

Structure information in three layers:

Layer 1: Summary (Above the Fold)

  • KPI cards with period-over-period comparison
  • One or two key trend charts
  • Status indicators (green/yellow/red)
  • No interaction required to understand the situation

Layer 2: Analysis (Below the Fold or One Click Away)

  • Breakdown charts (by segment, region, product)
  • Comparison views (budget vs actual, this year vs last)
  • Filter interactions to slice the data
  • Requires some interaction to explore

Layer 3: Detail (Drill-Through or Linked Dashboard)

  • Full data tables with export capability
  • Individual record-level views
  • Exception lists and anomaly details
  • Reached through explicit drill-down action

Principle 4: Consistent Visual Encoding

Once you assign a meaning to a visual property, never break that contract.

Color Assignments

Green  = Good / On Track / Growth
Red    = Bad / Behind / Decline
Blue   = Primary / Current Period
Gray   = Secondary / Comparison Period
Orange = Warning / Needs Attention

Typography

KPI Value:      28-36pt, Bold, Dark
KPI Label:      12-14pt, Regular, Medium Gray
Chart Title:    14-16pt, Semi-Bold, Dark
Axis Labels:    10-12pt, Regular, Medium Gray
Annotations:    11pt, Italic, Dark Gray

Spacing

Section padding:     24px
Card internal pad:   16px
Between cards:       12px
Chart margins:       16px top, 12px sides

Principle 5: Mobile-Aware Design

Design for the narrowest screen first, then expand.

Responsive Breakpoints

ScreenWidthGrid ColumnsApproach
Mobile<768px1Stack everything vertically, KPIs only
Tablet768-1024px2KPIs + one chart, filters in drawer
Desktop1024-1440px3-4Full layout
Large Display>1440px4-6Add context panels

Mobile Simplification Rules

1. KPI cards: Show value + trend arrow, hide sparklines

2. Charts: Show one at a time with swipe navigation

3. Filters: Collapse into a filter drawer, show active count

4. Tables: Convert to card layout (one row = one card)


Principle 6: Filter Design

Filters are the primary interaction model. Design them carefully.

Filter Placement

  • Global filters (date range, business unit): Top of page, always visible
  • Section filters (segment, category): Top of the section they control
  • Chart-specific filters (outlier toggle): Inside the chart container

Filter Defaults

Every filter must have a sensible default:

  • Date: Current month or last 30 days (not "all time" — that kills performance)
  • Segments: All selected (inclusive default)
  • Comparisons: Same period last year

Cross-Filter Behavior

Document how filters interact:

  • Does selecting a bar in Chart A filter Chart B? (Use this sparingly)
  • Do date range changes affect all charts? (Usually yes)
  • Are there filter dependencies? (Region → City cascading)

Principle 7: Annotation and Context

Numbers without context are meaningless. Always provide:

Comparison Points

  • Period-over-period (vs last month, vs last year)
  • Target/budget/forecast comparison
  • Benchmark (industry average, top quartile)

Annotations

  • Mark significant events on time series (product launch, outage, campaign start)
  • Add brief text explanations for anomalies
  • Include "last updated" timestamps

Thresholds

Define and display thresholds for KPIs:

Revenue Growth:    Green >10%, Yellow 0-10%, Red <0%
Customer Churn:    Green <2%, Yellow 2-5%, Red >5%
NPS Score:         Green >50, Yellow 30-50, Red <30

Principle 8: Performance and Load Time

A dashboard that takes 10 seconds to load won't be used daily.

Performance Rules

1. Limit to 10 queries per dashboard (fewer is better)

2. Pre-aggregate where possible (use materialized views / extracts)

3. Default date range should query <1M rows

4. Use incremental refresh for real-time-ish data

5. Lazy-load below-the-fold content

Anti-Patterns That Kill Performance

  • Calculated fields on unbounded date ranges
  • Cross-database joins at query time
  • Blending more than 3 data sources
  • LOD calculations (Tableau) on high-cardinality dimensions
  • Unindexed filters on large tables

Principle 9: Naming Conventions

Be boringly consistent with names.

Dashboards

{Domain} - {Focus} - {Audience}

Example: Marketing - Campaign Performance - Team Lead

KPI Cards

{Metric Name} ({Time Period})

Example: Revenue (MTD), New Users (Last 7 Days)

Charts

{Metric} by {Dimension} — {Time Period}

Example: Conversion Rate by Channel — Monthly

Filters

Select {Dimension}

Example: Select Region, Select Date Range


Principle 10: Documentation and Handoff

Every dashboard needs a companion spec. Minimum documentation:

markdown
## Dashboard: [Name]
**Primary Question:** [What this dashboard answers]
**Audience:** [Who looks at this and how often]
**Data Sources:** [Tables/views used]
**Refresh Cadence:** [How often data updates]
**Owner:** [Who maintains this]
**KPI Definitions:**
  - [Metric 1]: [exact calculation logic]
  - [Metric 2]: [exact calculation logic]
**Known Limitations:**
  - [What this dashboard does NOT show]
  - [Data delays or gaps]

Anti-PatternWhy It FailsFix
Pie charts with >5 slicesHumans can't compare arc anglesBar chart
3D chartsDistorts proportionsFlat 2D always
Dual-axis with unrelated metricsImplies correlation that doesn't existTwo separate charts
Red/green only encoding8% of men are colorblindAdd shape/pattern encoding
Dashboard as a data dumpNo narrative, no insightStart with a question
Vanity metricsBig numbers that don't drive actionShow rate-based or actionable metrics
No date context"Revenue: $1.2M" means nothing without whenAlways show time period
Auto-scaling axes from zeroSmall changes look dramaticFix axis or add reference line
Dashboard Design Templates v1.0.0 — Free Preview