ThemeRiver

A streamgraph — stacked categories flowing over time, each band's thickness its value. x is the time column (ISO dates parse best), y the value, and series the category each stream represents.

<ThemeRiver data={daily_streams} x="date" y="value" series="metric" title="Activity streams" />

From the semantic layer #

Like every chart, ThemeRiver also takes semantic metric refs instead of data={query}. series= is required (it splits the streams), so pair a metric with a by time dimension and a series category:

<ThemeRiver metric={sales.revenue} by={sales.order_date} series={sales.region} grain="month" />

Attributes #

Attribute Purpose
data Required. The query to plot (data={query}).
x Required. Time column (ISO dates like 2026-06-01 parse cleanly).
y Required. Value column — the band thickness.
series Required. Category column — one stream per distinct value.
title Chart title.
sort_by Column to sort by before plotting.
color Single color or comma-separated palette override.
height Pixel height (default 300).
col-span Columns to span inside a <Grid>.
format · currency · decimals · locale Tooltip value formatting.
empty_message Text shown when the query returns no rows.

ThemeRiver reuses the shared x/y/series attributes — series is required (it's what splits the streams). See Charts.

Generated