Skip to contents

Draws a hand-drawn streamgraph (a.k.a. ThemeRiver): a stacked area chart whose baseline floats so the coloured bands flow around a moving centre, good for showing how a few categories rise and fall over time. Map x (usually time), y (value), and fill (category). Values are stacked and the baseline offset by StatSketchStream; each band is drawn as a roughened ribbon, so it takes any fill_style (including "watercolor"). No new dependencies (cf. ggstream::geom_stream()).

Usage

StatSketchStream

geom_sketch_streamgraph(
  mapping = NULL,
  data = NULL,
  stat = "sketch_stream",
  position = "identity",
  ...,
  offset = "silhouette",
  fill_style = "hachure",
  roughness = 1,
  bowing = 1,
  n_passes = 2L,
  seed = NULL,
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE
)

Arguments

mapping

Aesthetic mappings created by ggplot2::aes(). Requires x and y; usually map fill (or group) to the category.

data

Data to display.

stat

Statistical transformation. Default "sketch_stream".

position

Position adjustment. Default "identity".

...

Other arguments passed on to the layer.

offset

Baseline placement: "silhouette" (centred, the classic streamgraph, default), "zero" (a normal stacked area), or "wiggle" (minimises the overall slope).

fill_style

Band fill style; see geom_sketch_ribbon(). Default "hachure".

roughness, bowing, n_passes, seed

Sketch parameters.

na.rm

Remove missing values silently? Default FALSE.

show.legend

Logical; include in legend?

inherit.aes

Override default aesthetics?

Value

A ggplot2 layer object.

Examples

library(ggplot2)
set.seed(1)
df <- expand.grid(t = 1:12, grp = c("a", "b", "c", "d"))
df$v <- abs(sin(df$t / 3 + match(df$grp, letters)) + 1.2) * 5
ggplot(df, aes(t, v, fill = grp)) +
  geom_sketch_streamgraph(seed = 1L) +
  theme_sketch()