Mit der automatisierten Datenfluss-Engine von Domo wurden Hunderte von Stunden manueller Prozesse bei der Vorhersage der Zuschauerzahlen von Spielen eingespart.
Stream Graphs: What They Are and When to Use Them
Stream graphs are great when we want to take time-series data and quickly turn it into visuals that communicate trends. With their flowing, organic appeal, viewers can quickly discern composition changes at a glance. In this article, we’ll show you what makes them different from standard stacked area charts then walk you through the conditions where they excel. We also share a practical checklist you can use when you prepare your data and build the chart.
What’s a stream graph?
A stream graph, which is also known as a streamgraph, stream chart, or stream diagram (the original 2002 research called it a ThemeRiver, a name that captures its visual effect well), presents a visual of your data like a river where different colored bands of water flow in unison.
It's a type of stacked area chart where layers flow along a central axis instead of building up from zero. Each color represents a category, and the thickness of each band shows that category's value at any point in time.
Unlike a standard stacked area chart, where all layers sit on top of each other from a flat baseline at the bottom, a stream graph shifts that baseline to the center. This creates its flowing, organic shape, which reduces visual distortion for the middle layers but makes it harder to read exact values.
While stream graphs may be frustrating if you're in search of precise presentations of your data, they are ideal for showing how your data mix changes over time, allowing people to quickly and easily spot patterns.
When to use a stream graph?
When you value pattern recognition over precision.
This chart shines when you want to show how multiple categories shift relative to each other over time. Think about a BI analyst trying to get a marketing manager out of a maze of line charts. Or a sales leader scanning pipeline stages across months. A finance team watching spend buckets ebb and flow across quarters. These scenarios benefit from the flowing visual because the goal is pattern recognition, not precise measurement.
It also helps with a practical problem: repeated ad hoc requests. McKinsey found only 20 percent of organizations excel at decision-making, partly because getting to the right breakdown takes too long. A well-placed stream graph in a dashboard can cut the back-and-forth because the mix is always visible. Stakeholders stop asking, "Can you break this down by channel?" when they can already see it.
This visualization works well when:
- Showing composition change: Your audience should be able to see which categories grow or shrink relative to others, not their exact numerical values.
- Presenting to non-technical stakeholders: The organic shape invites exploration without demanding high numerical literacy (Gartner found 47 percent of data and analytics leaders rank data literacy a top organizational challenge, which means nearly half your audience may struggle with more complex chart types).
- Working with 5 to 12 categories: Fewer will feel too sparse, while more categories will create visual noise.
- Prioritizing narrative over extraction: The meeting's goal is to present how things have shifted rather than a mere presentation of the raw numbers.
But this chart fails in specific situations. If stakeholders ask exactly how much Category A grew, the shifted baseline frustrates everyone. A stacked area chart with a zero baseline works better there. When one category dominates the data set, it compresses everything else into unreadable slivers. And finance teams or executives who were trained on traditional charts may misread the shifted baseline as more meaningful than it is.
If you choose it anyway, expect viewers to attempt reading absolute values from layer heights. They'll compare the wrong edges. They'll ask for the raw numbers. Build in hover tooltips or provide a companion data table.
Before you commit, do a quick data readiness check. Stream graphs only look intuitive when the underlying time series and categories are clean and consistent. That's why analytic engineers and data engineers often get pulled in when the first draft renders strangely.
Your data preparation checklist:
- One row per time-category combination: Pivot or reshape if your data arrives in wide format.
- No missing time points: Fill gaps with zeros or interpolated values depending on your metric.
- Consistent time intervals: Mixing daily and weekly data distorts the horizontal axis.
- Category count check: More than 12 to 15 categories? Group the smallest into "Other" first.
How a stream graph works
The layers stack symmetrically around a computed center rather than building up from zero. Current tools usually use one of two algorithms to calculate this centering. The "wiggle" algorithm minimizes weighted slope changes. The "silhouette" algorithm simply centers the baseline. Your choice affects which layers appear stable and which appear volatile.
But here's where interpretation gets tricky. The wiggle algorithm makes outer edges more jagged while keeping inner layers smooth. Since viewers naturally focus on edges, they may perceive volatility that exists in the math rather than in the actual data. It's a common misreading. People assume a jagged edge means the underlying category is unstable, when it's actually an artifact of the smoothing algorithm.
People frequently misread these charts in predictable ways:
- Reading layer height as absolute value: The thickness represents the value, but because layers shift, comparing across time points requires mental adjustment most viewers skip.
- Comparing across the centerline: Layers above and below the center aren't meaningfully different since the center placement is arbitrary.
- Assuming stable edges mean stable data: The algorithm smooths inner layers at the expense of outer ones, so edge categories may appear more volatile than they actually are.
How to read a stream graph
You can guide your audience to better insights by teaching them a specific reading order:
- Identify the time axis and confirm the interval (daily, weekly, monthly).
- Locate the largest layers since these dominate the composition.
- Track individual layers across time by following one color from left to right.
- Note relative changes rather than absolute sizes.
- Use tooltips or labels when you need precision.
Stream graph variations
Not all stream graphs behave the same way. The variation you choose affects what your audience can do with the chart.
Interactive stream graph
Interactive versions allow hover states, click-to-isolate functions, and dynamic filtering. These work well in dashboards where people explore data rather than receive a fixed narrative. They are also a nice fit for line-of-business (LOB) leaders who want to filter by time range or category without calling an analyst.
In platforms like Domo, you can pair that exploration with AI chat and natural language query so people can ask quick follow-ups based on what they see. Gartner reinforced this direction by predicting half of business decisions will be AI-augmented (for example, "Why did paid search dip in March?") without leaving the dashboard.
But interactivity requires a platform that supports it, and audiences unfamiliar with the interaction patterns may never discover the features exist.
Static stream graph
Static exports freeze the chart at a single state. Reports. Slide decks. Print. Without hover states, viewers can't access precise values, so you'll have to add labels, annotations, or a companion table.
If the chart is headed to an executive review or a board meeting, this is where you keep it visually clean and annotate the inflection points you actually want discussed. It's an often overlooked step.
Sorted stream graph
Sorting changes which categories appear at the center vs the edges. You might sort by total value (largest in the center), by last-period rank, or by peak date. Center layers appear more stable than edge layers, so sorting heavily affects perception.
Match the variation to your situation. For executive presentations, choose static with clear annotations. For self-service analytics, choose interactive so people can hover for precise numbers. For data sets with one massive category, sort it to the center to prevent it from distorting the rest.
How to create a stream graph
Before opening any software, check your data structure. A stream graph requires three columns: a time dimension (date, week, month), a category dimension (channel, product, region), and a numeric value (revenue, sessions, units). Each combination of time and category needs exactly one row. Missing combinations leave gaps. Duplicates cause stacking errors.
Excel doesn't have a native stream graph chart type. You can approximate one by creating a stacked area chart, calculating baseline offsets, and adding those offsets as a hidden series. That approach can be brittle when the data updates, and it's hard to maintain for recurring reporting. For ongoing dashboards or frequently refreshed data, a BI platform that supports stream graphs directly is usually a better fit.
Many modern BI platforms support stream graphs natively. Connect your data source, map time to the horizontal axis, category to color, and value to the vertical axis. Select the stream chart type. Adjust the offset algorithm if the tool exposes that option.
In Domo, Stream Graph is part of the visualization library. A BI analyst can configure the view directly in the dashboard building flow instead of building custom visuals. If your organization uses a reusable metrics layer for consistent definitions, stream graphs get a lot easier to repeat across dashboards without rebuilding the same category logic each time.
A frequent build mistake is using wide-format data where categories exist as separate columns. Most charting tools expect long format for this visualization. Reshape your data into three columns before importing.
If you're supporting this at the data layer, standardize the transformation once and reuse it. In Domo, Magic Transform (with no-code steps and SQL) is a practical way to time-bucket raw event logs or transactional data into the consistent time-category-value structure stream graphs need. Centralized data governance also helps here. Version-controlled data sets reduce those "why did the chart change?" moments.
After building, verify that the sum of all layer heights at any time point equals your expected total. Check tooltips against your source data. Discrepancies usually indicate missing rows or duplicate entries.
If you're embedding stream graphs into a custom app or an external-facing analytics experience, developers usually care about two things: shipping without reinventing the chart, and controlling who sees what. Domo Apps (including Code Engine and reusable components) can help you integrate stream graphs without maintaining your own visualization logic, and Domo Everywhere supports row-level security and programmatic filtering so each person only sees permission-scoped data.
Want a second set of eyes on your data shape, category bucketing, or dashboard interactivity before you hit publish? Join the Domo community and swap notes with people building stream graphs in practice.
Frequently asked questions
Can you create a stream graph in Excel without add-ins?
How many categories can a stream graph display before becoming unreadable?
What is the difference between a stream graph and a stacked area chart?
A stacked area chart builds layers from a fixed zero baseline, making totals readable but distorting top layers. A stream graph centers layers around a shifting baseline, distributing distortion evenly but sacrificing precise value reading.




