Skip to contents

Draws a hand-drawn funnel: one horizontal bar per stage, centred on zero, whose width is the stage's value (x), so the shrinking bars read as drop-off down the stages (y). Translucent trapezoids connect each stage to the next. Put the first stage at the top by ordering the y factor levels accordingly (or add scale_y_discrete(limits = rev)); hide the mirrored x axis with theme(axis.text.x = element_blank()) or relabel it with scale_x_continuous(labels = abs).

Usage

StatSketchFunnel

GeomSketchFunnel

geom_sketch_funnel(
  mapping = NULL,
  data = NULL,
  stat = "sketch_funnel",
  position = "identity",
  ...,
  bar_width = 0.7,
  connectors = TRUE,
  connector_alpha = 0.3,
  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 (the stage value) and y (the stage).

data

Data to display.

stat

Statistical transformation. Default "sketch_funnel".

position

Position adjustment. Default "identity".

...

Other arguments passed on to the layer.

bar_width

Bar thickness in y units. Default 0.7.

connectors

Draw the trapezoid connectors? Default TRUE.

connector_alpha

Connector translucency. Default 0.3.

fill_style

Bar fill style; see geom_sketch_rect(). 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)
funnel <- data.frame(
  stage = factor(c("Visited", "Signed up", "Activated", "Paid"),
                 levels = rev(c("Visited", "Signed up", "Activated",
                                "Paid"))),
  n     = c(1200, 460, 210, 80)
)
ggplot(funnel, aes(n, stage, fill = stage)) +
  geom_sketch_funnel(seed = 1L, show.legend = FALSE) +
  scale_x_continuous(labels = abs) +
  theme_sketch()