Draws a hand-drawn waterfall: each step's delta (y) floats a bar from the
running total before it to the running total after it, stepping the level up
and down across the categories (x), with dotted hand-drawn connectors
carrying the level across the gaps. Map an optional measure aesthetic with
value "total" for rows that should draw the running total from zero (e.g.
a closing "Net" row) instead of a delta.
Usage
StatSketchWaterfall
GeomSketchWaterfall
geom_sketch_waterfall(
mapping = NULL,
data = NULL,
stat = "sketch_waterfall",
position = "identity",
...,
width = 0.62,
fill_increase = "#7fa87f",
fill_decrease = "#b56b6f",
fill_total = "#8391a7",
connectors = TRUE,
connector_colour = "grey40",
colour = "grey25",
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(). Requiresx(step, usually a factor in ledger order) andy(the delta); optionallymeasure("relative"or"total"per row).- data
Data to display.
- stat
Statistical transformation. Default
"sketch_waterfall".- position
Position adjustment. Default
"identity".- ...
Other arguments passed on to the layer.
- width
Bar width in x units. Default 0.62.
- fill_increase, fill_decrease, fill_total
Bar fills by direction. Set any to
NULLto mapfillyourself.- connectors
Draw the dotted level connectors? Default
TRUE.- connector_colour
Connector colour. Default
"grey40".- colour
Bar outline colour. Default
"grey25".- 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?
Details
Bars are coloured by direction (fill_increase / fill_decrease /
fill_total); set any of them to NULL and map fill yourself (the stat
exposes the direction as after_stat(change)).
See also
Other sketch-geoms:
GeomSketchAbline,
GeomSketchArrow,
GeomSketchBoxplot,
GeomSketchBracket,
GeomSketchCallout,
GeomSketchChicklet,
GeomSketchCol,
GeomSketchContourFilled,
GeomSketchCurve,
GeomSketchDotplot,
GeomSketchDumbbell,
GeomSketchEdge,
GeomSketchEllipse,
GeomSketchEngrave,
GeomSketchGantt,
GeomSketchHex,
GeomSketchLine,
GeomSketchLinerange,
GeomSketchLollipop,
GeomSketchMarkCircle,
GeomSketchMarkHull,
GeomSketchPath,
GeomSketchPoint,
GeomSketchPolygon,
GeomSketchRect,
GeomSketchRibbon,
GeomSketchRug,
GeomSketchSegment,
GeomSketchSfPolygon,
GeomSketchSlope,
GeomSketchSmooth,
GeomSketchSpoke,
GeomSketchTextRepel,
GeomSketchViolin,
StatSketchBeeswarm,
StatSketchCalendar,
StatSketchDensityRidges,
StatSketchFunnel,
StatSketchPie,
StatSketchPyramid,
StatSketchRadar,
StatSketchStream,
StatSketchTreemap,
StatSketchWaffle,
annotate_sketch(),
annotate_sketch_arrow(),
annotate_sketch_callout(),
annotate_sketch_highlight(),
geom_sketch_alluvial(),
geom_sketch_arc_diagram(),
geom_sketch_bin2d(),
geom_sketch_bump(),
geom_sketch_chord(),
geom_sketch_contour(),
geom_sketch_count(),
geom_sketch_dendrogram(),
geom_sketch_density(),
geom_sketch_density2d(),
geom_sketch_ecdf(),
geom_sketch_function(),
geom_sketch_histogram(),
geom_sketch_jitter(),
geom_sketch_marimekko(),
geom_sketch_mosaic(),
geom_sketch_parallel(),
geom_sketch_qq(),
geom_sketch_quantile(),
geom_sketch_rose(),
geom_sketch_sunburst(),
geom_sketch_text(),
sketch_graph()
Examples
library(ggplot2)
ledger <- data.frame(
step = factor(c("Start", "Sales", "Refunds", "Costs", "Tax", "Net"),
levels = c("Start", "Sales", "Refunds", "Costs", "Tax",
"Net")),
delta = c(120, 80, -25, -60, -18, 0),
kind = c("relative", "relative", "relative", "relative", "relative",
"total")
)
ggplot(ledger, aes(step, delta, measure = kind)) +
geom_sketch_waterfall(seed = 1L) +
theme_sketch()
