Why this matters
As a Data Scientist, you regularly explain what changed and why. Time series visuals help you:
- Monitor KPIs (signups, revenue, DAU) and spot trends or breaks.
- Detect anomalies and seasonality (weekends, holidays, product launches).
- Communicate experiment results over time (before/after, ramp-ups).
- Present forecasts with uncertainty to set realistic expectations.
- Compare multiple products or segments without overwhelming the audience.
Real tasks you might face
- Show a 7-day moving average to smooth noisy daily metrics.
- Annotate a line chart to highlight a marketing campaign start.
- Add a confidence band around a forecast.
- Compare 4 regions with small multiples instead of one cluttered chart.
- Reveal seasonality using a calendar or monthly-seasonality heatmap.
Concept explained simply
A time series is a sequence of observations indexed by time. Good visuals reveal three layers:
- Trend: long-term direction.
- Seasonality: repeating patterns (daily/weekly/yearly).
- Noise: random variation and outliers.
Charts you will use most:
- Line chart: default for continuous metrics over time.
- Smoothed line: rolling mean/median or LOESS to clarify trend.
- Area or stacked area: when showing totals/parts-of-whole over time (use carefully).
- Ribbon/band: show ranges like confidence intervals or min–max.
- Heatmap: compact view of seasonality across hours/days/months.
- Small multiples: same chart repeated across segments for clean comparisons.
Mental model: layer your insight
- Layer 1: Raw series (truth).
- Layer 2: Smoother (context).
- Layer 3: Events and intervals (explanations) like annotations/shaded regions.
Choosing the right chart
- Single metric, continuous time: line + optional rolling average.
- Compare 3–8 segments: small multiples over a shared scale.
- Show uncertainty/forecast: line + shaded confidence band.
- Highlight seasonality by hour/day: heatmap grid (hour vs. day-of-week or month).
- Show stepwise changes (prices, version releases): step chart.
- Many sparse events: lollipop/impulse plot (vertical spikes).
- Irregular timestamps/missing periods: keep true time scale; avoid connecting across missing gaps.
Design checklist for time series
- Time axis: use true dates; format ticks that users recognize (Mon, Mar 2026).
- Y-axis: for line charts, zero-baseline is optional; for area charts, prefer zero to avoid exaggeration.
- Smoothing: clearly label window size (e.g., 7-day MA). Do not hide important spikes.
- Annotations: mark launches, outages, campaigns with vertical lines or text notes.
- Comparisons: avoid dual y-axes; use indexing (set day 0 = 100) or small multiples.
- Uncertainty: use ribbons (lighter color) behind the line.
- Color: 1–2 key colors; keep the rest muted. Use consistent colors across related charts.
- Missing data: show gaps or faded segments; do not interpolate silently.
- Accessibility: ensure sufficient contrast; use markers or dashes in addition to color.
Worked examples
Example 1 — DAU with a 7-day moving average and event annotation
- Plot DAU by date as a thin line with markers every 7 days.
- Add a 7-day moving average as a thicker line; label it "7d MA".
- Add a vertical line on campaign start date with a short note (e.g., "Ads launch").
- Optional: lightly shade weekends to reveal weekly seasonality.
- Title emphasizes insight: "DAU grew 18% after campaign; weekly dips on weekends".
Why it works: Users see the real data, the underlying trend, and a plausible cause of change.
Example 2 — Comparing product revenues without clutter
- Create small multiples: one line chart per product, same axes and scale.
- Alternatively, index each product to 100 at week 1 to compare growth rates.
- Avoid stacked area unless you care about total revenue composition.
- Label the last point of each series to reduce legend scanning.
Why it works: Clean comparison without overlapping lines or dual axes.
Example 3 — Seasonality heatmap for support tickets
- Aggregate tickets by day-of-week (rows) and hour-of-day (columns).
- Use a color scale (light=low, dark=high). Include a simple legend.
- Optionally show separate heatmaps for different months (small multiples).
- Title: "Tickets peak Tue–Thu, 10:00–14:00; low on weekends".
Why it works: Instantly reveals predictable busy hours for staffing decisions.
Example 4 — Forecast with confidence ribbon
- Plot history as a solid line up to today.
- Plot forecast as a dashed line from today onward.
- Add a 80–95% confidence ribbon behind forecast.
- Annotate assumptions (e.g., "Assumes no pricing changes").
Why it works: Sets expectations and avoids a false sense of precision.
Exercises
Do these practical tasks. The quick test is available to everyone; sign in to save your progress.
Exercise 1 — Smooth and annotate
You have 6 months of daily conversion rate (CR). It is noisy, especially on weekends. Create a time series visual that:
- Shows daily CR with visible weekend dips.
- Overlays a 7-day moving average.
- Annotates the date a new checkout flow launched.
Hints
- Keep CR as a percentage with consistent decimals.
- Use a thin raw line and a thicker smoothed line.
- Use a vertical marker and short note for the launch.
Show solution
- Plot daily CR (%) as a light line; mark every Monday for reference.
- Add a 7-day rolling mean as a darker line, labeled in-legend or with direct text.
- Add a vertical dotted line on launch date plus text "New checkout".
- Optional: subtle weekend shading to reveal weekly cycles.
- Title: "CR stabilizes after new checkout; weekend dips persist".
Exercise 2 — Many series, clean comparison
You need to compare CPU usage (hourly) for 12 servers over 14 days. Choose an approach and build the visualization.
- Keep it readable without overlapping 12 lines in one plot.
- Allow easy spotting of outlier servers.
Hints
- Use small multiples or summarize distribution per hour.
- A median line with an IQR ribbon + a few outlier lines is effective.
- Keep scales identical across panels.
Show solution
- Option A: Small multiples — 12 panels, one per server, same y-axis. Add a faint global median in each panel.
- Option B: Aggregate — One plot with median line and 25–75% ribbon; overlay lines for top 2 outlier servers (identified separately).
- Annotate any maintenance window with a shaded region.
Self-check before you move on
- Did you avoid dual y-axes for comparisons?
- Is every smoothing window clearly labeled?
- Are gaps or missing data shown honestly?
- Are colors consistent and accessible?
- Does the title communicate the key insight, not just the metric name?
Common mistakes and how to self-check
- Overplotting too many lines: Prefer small multiples or summaries.
- Hidden smoothing: Always label smoothing and keep raw data visible or available.
- Dual y-axes confusion: Use indexing or separate panels instead.
- Misleading area charts above zero baseline: Keep area charts starting at zero.
- Ignoring missing data: Show gaps; do not bridge unless stated.
- Dense date ticks: Reduce clutter; use monthly ticks or rotate labels.
Practical projects
- Product launch dashboard: DAU, conversion rate, and revenue lines with annotations and a 7-day MA; forecast next 30 days with a ribbon.
- Seasonality atlas: Create a weekly heatmap (day vs. hour) for two core metrics; add a brief interpretation note.
- Region comparison: Small multiples of weekly revenue per region, indexed to 100 at the start; add labels on last points.
Who this is for
- Data Scientists and Analysts who need to explain changes over time.
- Engineers building monitoring views for product/infra metrics.
- Managers preparing KPI updates and experiment readouts.
Prerequisites
- Comfort with basic charts (line/area/heatmap) in your preferred tool.
- Understanding of moving averages and simple aggregations.
- Basic knowledge of statistical uncertainty (confidence intervals).
Learning path
- Start: Line charts with proper date axes and labels.
- Next: Rolling statistics, annotations, and event markers.
- Then: Small multiples and indexing for comparisons.
- Advanced: Uncertainty ribbons and seasonality heatmaps.
Mini challenge
Your team ran a 3-week promo. Build one visual that clearly shows: baseline trend, promo period, effect size, and whether the effect persisted. Use the principles above. Keep it scannable in under 10 seconds.
Next steps
- Polish one of your project visuals and share it with a teammate for feedback.
- Then take the quick test to confirm your skills. Note: the test is available to everyone; sign in to save your progress.
Ready to check your knowledge?
Take the quick test below. You can retake it. Logged-in users will have progress saved.