A streamgraph in Power BI: watch the make-up change
Getting started with Stream Plume: prepare a monthly table by channel, insert the visual, read the streams, change the layout and filter the page with one click.
Lire en françaisIn short
What is a streamgraph? It is a stacked area that floats around a central axis instead of sitting on zero. Each category (a sales channel, a product, an energy source) forms a stream whose thickness, at each date, is its value. The total thickness is the month's total; the shape of each stream tells its trend.
Mini example. In January, Web makes $60,000 and Stores $40,000: together the two streams are $100,000 thick, Web takes 60% of it. In June, Web goes up to $90,000 and Stores falls to $30,000: the Web stream thickens, the Stores stream thins, and the whole grows.
- What the visual does. Stream Plume draws these streams, puts the largest in the middle, smooths their edges without letting them cross and writes each stream's name where it is thickest. It can also center the streams, show them as 100% or as classic stacked areas, split the chart into small multiples and draws from left to right when shown. With premium (★), it replays time with a cursor (playback), highlights the biggest risers, groups small streams into "Others", shows start and end values, compares to a reference period, places events and gives the ranking at each date during playback.
- When to use it. To show how the make-up of a total changes over many periods: revenue by channel, energy mix, market shares, tickets by category.
- When to prefer something else. To read exact values and compare them, Line Plume (lines) or Bar Plume (bars) are more precise; for a single date, a bar chart or a donut.
- What you will be able to do. Prepare a table, insert the visual, read the streams and the size scale, change the layout, filter the page with one click.
- What you need: Power BI Desktop, the Stream Plume visual installed (see the common basics), a table with a date, a category and an amount. The PlumeStream-Sample-EN sample report, in your "Downloads" area, shows a small business's sales by channel and an energy mix (page 1), four layouts (page 2) and the ★ features (page 3).
The data to provide
The shape. One row per date and per category: the date (or month), the category, the amount. Every category does not need a value at every date: a missing value counts as zero.
| Month | Channel | Amount |
|---|---|---|
| 01/01/2025 | Web | 61,000 |
| 01/01/2025 | Stores | 42,000 |
| 01/01/2025 | Phone | 18,000 |
| 02/01/2025 | Web | 66,000 |
| 02/01/2025 | Stores | 39,000 |
| 02/01/2025 | Phone | 17,500 |
| 03/01/2025 | Web | 72,000 |
| 03/01/2025 | Stores | 37,000 |
| 03/01/2025 | Phone | 19,000 |
To try it without a file: Modeling › New table, then paste:
Sales =
DATATABLE (
"Month", DATETIME, "Channel", STRING, "Amount", DOUBLE,
{
{ "2025-01-01", "Web", 61000 }, { "2025-01-01", "Stores", 42000 }, { "2025-01-01", "Phone", 18000 },
{ "2025-02-01", "Web", 66000 }, { "2025-02-01", "Stores", 39000 }, { "2025-02-01", "Phone", 17500 },
{ "2025-03-01", "Web", 72000 }, { "2025-03-01", "Stores", 37000 }, { "2025-03-01", "Phone", 19000 },
{ "2025-04-01", "Web", 70000 }, { "2025-04-01", "Stores", 41000 }, { "2025-04-01", "Phone", 21000 },
{ "2025-05-01", "Web", 78000 }, { "2025-05-01", "Stores", 35000 }, { "2025-05-01", "Phone", 20000 },
{ "2025-06-01", "Web", 90000 }, { "2025-06-01", "Stores", 30000 }, { "2025-06-01", "Phone", 22000 }
}
)
The measure. The Values well expects a measure (a calculation Power BI redoes for each filter, written in DAX; see the glossary):
Revenue = SUM ( Sales[Amount] ) -- adds up the rows of each month and each channel
Pitfalls.
- Drop the date column itself, not the automatic hierarchy (Year › Quarter › Month › Day): click the field's arrow in the well, then choose the column name.
- A streamgraph shows positive amounts. A negative value counts as zero (a warning shows in edit mode): for changes, prefer Waterfall Plume or Bar Plume.
- A text category ("Q1 2024", "Q2 2024") works too: it keeps the data order.
Step by step: your first streamgraph in 10 minutes
- In the Visualizations pane, click the Stream Plume icon. An empty frame appears, with a landing page listing the fields to drop; stretch it across the page.
- Drop the
Monthcolumn into Time axis. Check that it is the column and not the hierarchy. - Drop
Channelinto Streams (legend), then theRevenuemeasure into Values. The streams draw from left to right; each channel's name is written inside its stream. - Find the vertical "↕ …" marker on the left: this is the size scale. A stream as thick as this marker is worth that amount. (Flowing streams have no zero, hence no classic Y axis.)
- Hover a stream: the others fade and the tooltip gives the month, the value, the share of the total, the channel's rank and the change since the previous month.
- Open Format › Streams › Layout and choose Stacked areas (from zero): the streams sit on zero and a Y axis appears. Try 100% (shares of the total), then go back to Flowing streams (streamgraph).
- In Format › Stream labels › Content, choose Name and total: each label gives the channel's total over the period.
- The names are written in the chart: you can remove the legend with Format › Stream labels › Hide the legend.
- Click a stream: the other visuals of the page filter on that channel (cross-filtering, see the glossary). Ctrl + click adds another; click an empty area to clear.
- With the keyboard: Tab to the chart, left and right arrows to browse the months, up and down to change stream, Enter to select, Esc to clear.
Expected result: the three channels as flowing streams, Web in the middle getting thicker, names inside the streams, a size scale on the left, and a page filter in one click.
Troubleshooting
| What you see | Likely cause | Solution |
|---|---|---|
| A single very wide stream, or one stream per year | The date hierarchy is used instead of the column | Field arrow › choose the column name |
| A stream has no label | It is too thin at every date | Expected; its name is in the legend and the tooltip. Lower Size (minimum when automatic) |
| "Negative values counted as zero" | The measure returns negative values | A stream cannot be negative: use a positive measure or another visual |
| No Y axis | Flowing and centered streams have no zero | Read the size scale, or switch to Stacked areas |
| Streams in a strange order | "Largest in the middle" alternates top and bottom | Format › Streams › Stream order: By total, By name or Custom order |
| Too many streams, unreadable chart | Too many categories | Top N and Others ★, or a filter on the categories |
| "Premium preview" watermark | A ★ feature is used without a key | Key in Format › Plume Studio License, or a free setting |
Key takeaways
- One row per date and per category; the date column, not the hierarchy.
- A stream's thickness is its value; the size scale gives the order of magnitude.
- Names are written inside the streams, where they are thickest: the legend becomes optional.
- Flowing, centered, 100% or stacked areas: a single setting, Format › Streams › Layout.
Going further
- Stream Plume how-to recipes: recipes for common needs.
- Stream Plume fields and settings: every field well and every setting.
- Getting started with Plume visuals: installation, license, styles and common settings.
- The visual's page: Stream Plume. A question: support.