Time SeriesIntermediate

Streamgraph

A flowing, organic variation of the stacked area chart where layers are centred around a middle axis — trading precision for visual impact and pattern recognition.

// 01 — The chart

What it looks like

Example — Music genre popularity over decades1960 – 2020
1960198020002020

A streamgraph showing the rise and fall of music genres. Layer thickness encodes relative popularity; the centred baseline produces a river-like shape.

// 02 — Definition

What is a streamgraph?

A streamgraph (also called a stream chart or ThemeRiver) is a type of stacked area chart in which the layers are displaced around a central axis rather than stacked above a zero baseline. This produces a smooth, flowing shape that resembles a river or geological cross-section.

The key difference from a conventional stacked area chart is that no single layer rests on a flat baseline. Instead, the algorithm distributes the wiggle evenly, minimizing the visual distortion of any single layer. This makes it easier to perceive each layer’s thickness but harder to read exact values.

Streamgraphs became famous through a 2008 New York Times visualization of box office revenues. They are best used for showing broad patterns, trends, and the rise and fall of categories over time — not for precise data retrieval.

Origin: Lee Byron and Martin Wattenberg developed the modern streamgraph in 2008, building on the ThemeRiver concept from 2002. Their paper “Stacked Graphs — Geometry & Aesthetics” introduced the wiggle-minimizing baseline algorithm still used today.

// 03 — Anatomy

Parts of a streamgraph

ABC
A — Layer thickness: The vertical width of each band encodes the magnitude of that series at that time point
B — Central baseline: The invisible axis around which all layers are symmetrically distributed
C — Organic edges: Smooth curved boundaries produced by the wiggle-minimizing baseline algorithm

// 04 — Usage

When to use it — and when not to

✓Use a streamgraph when…
  • Showing the rise and fall of multiple categories over a long time span
  • Visual storytelling and editorial contexts where aesthetics matter
  • You want to reveal broad patterns rather than exact values
  • Comparing relative sizes of many categories simultaneously
  • Creating an engaging, attention-grabbing visualization
×Avoid a streamgraph when…
  • Precise value reading is important — there's no flat baseline to measure against
  • You need to compare exact values between series at specific time points
  • Your audience is unfamiliar with this chart type — it can be confusing
  • You have fewer than 3 series — a standard area chart is simpler and clearer
  • Data contains many zero-values or gaps — the flow breaks down

// 05 — Reading guide

How to read a streamgraph

1

Match colours to categories

Use the legend to identify what each flowing band represents. This is your first and most important step.

2

Look at layer thickness

The wider a band at any point, the larger that category's value. Don't be misled by vertical position — only thickness matters.

3

Track how bands grow and shrink

Follow a single band from left to right. Where does it swell? Where does it pinch? These changes show the rise and fall of that category.

4

Compare adjacent layers

When one layer expands while its neighbour contracts, there may be a competitive or substitution relationship between them.

5

Don't try to read exact values

Streamgraphs are designed for patterns and proportions, not precise measurements. If you need exact numbers, consult the underlying data.

// 06 — Data format

What data you need

Same as a stacked area chart: one time column and one numeric column per series. Values must be non-negative. The baseline-offset algorithm is applied during rendering.

// 07 — Construction

How to build one

Step 1: Start with a standard stacked area layout. Compute the cumulative y-values for each time point.

Step 2: Apply a baseline offset. The “wiggle” algorithm (Byron & Wattenberg, 2008) minimizes the weighted sum of squared slopes across all layers, producing the smoothest possible shape.

Step 3: Use interpolation (cubic spline or basis) to create smooth curves between data points.

Step 4: Assign distinct colours to each layer and add a clear legend. Interactive tooltips are highly recommended since values can’t be read from axes.

// 08 — Common mistakes

Mistakes to avoid

Using it for precise analysis

Streamgraphs sacrifice precision for aesthetics. If your audience needs exact values, use a stacked area chart or small multiples.

Too many layers

Beyond 8–10 layers, even streamgraphs become noisy. Aggregate small categories into an 'Other' band.

No interactivity

Without tooltips, readers have no way to extract values. Always add hover states that show the category name and value.

Misleading colour mapping

Ensure colours are distinct and the legend is visible. Adjacent layers with similar colours are impossible to tell apart.

// 09 — Real-world examples

Where you’ll see them

NYT Box Office Revenue

The 2008 New York Times piece 'The Ebb and Flow of Movies' is the most famous streamgraph. It tracked weekly box office grosses for hundreds of films.

Music listening history

Last.fm and Spotify data are often visualised as streamgraphs showing how listening habits change over months and years.

Technology trend reports

Stack Overflow's developer survey data and GitHub's language popularity are sometimes presented as streamgraphs to show the evolution of programming ecosystems.

// 10 — Quick reference

Key facts

Also known asStream chart, ThemeRiver
CategoryTime series
DifficultyIntermediate
Invented2008 by Lee Byron & Martin Wattenberg
Best for3–10 series, long time ranges, editorial use
Key trade-offBeautiful but imprecise

// 11 — Accessibility

Making it accessible

Streamgraphs are inherently challenging for accessibility. Provide a data table alternative and ensure interactive tooltips are keyboard-navigable. Use ARIA labels to describe the overall pattern. Choose colours that pass WCAG contrast and are distinguishable for colourblind users.

// 12 — Variations

Common variations

Symmetric streamgraph

The classic form — layers expand equally above and below the central axis.

Asymmetric / weighted

Baseline biased toward the bottom to preserve some readability while keeping the organic look.

Interactive streamgraph

Hovering over a layer highlights it and shows values, compensating for the lack of readable axes.

Small-multiple streams

Breaking the streamgraph into individual panels for each category, preserving the aesthetic while adding clarity.

// 13 — FAQs

Frequently asked questions

What is a streamgraph?+

A streamgraph (also called a stream chart or ThemeRiver) is a type of stacked area chart in which the layers are displaced around a central axis rather than stacked above a zero baseline. This produces a smooth, flowing shape that resembles a river or geological cross-section.

When should you use a streamgraph?+

Use a streamgraph when showing the rise and fall of multiple categories over a long time span. It also works well when visual storytelling and editorial contexts where aesthetics matter, and when you want to reveal broad patterns rather than exact values.

When should you avoid a streamgraph?+

Avoid a streamgraph when precise value reading is important — there's no flat baseline to measure against. It is also a poor fit when you need to compare exact values between series at specific time points, or when your audience is unfamiliar with this chart type — it can be confusing.

What data do you need to make a streamgraph?+

Same as a stacked area chart: one time column and one numeric column per series. Values must be non-negative. The baseline-offset algorithm is applied during rendering.

How is a streamgraph different from a stacked area chart?+

Both a streamgraph and a stacked area chart can look similar at first glance, but they answer different questions. Reach for a streamgraph when the comparisons and patterns it was designed to reveal match what you need to communicate, and choose a stacked area chart when its particular strengths better fit your data and audience.

What is another name for a streamgraph?+

Streamgraph is also known as Stream chart, ThemeRiver. The name varies between fields, but the visualisation technique is the same.

What size of dataset works best for a streamgraph?+

Streamgraph works best for 3–10 series, long time ranges, editorial use. Outside that range the chart either looks empty or becomes too cluttered to read clearly.

Are streamgraphs accessible to screen readers?+

Streamgraphs are inherently challenging for accessibility. Provide a data table alternative and ensure interactive tooltips are keyboard-navigable. Use ARIA labels to describe the overall pattern. Choose colours that pass WCAG contrast and are distinguishable for colourblind users.