Draws a hand-drawn alluvial diagram: two or more categorical axes, each a
stack of strata (boxes), connected by flows (ribbons) whose thickness is the
frequency of each category combination. Like geom_sketch_chord() it is a
constructor that returns a list of ordinary sketch layers (roughened strata,
roughened flow ribbons with smooth S-curved edges, and stratum labels), so it
composes with + and any fill scale. It draws in ordinary x/y space; pair it
with theme_void() or theme_sketch(). No new dependencies
(cf. ggalluvial, ggsankey).
geom_sketch_alluvial(
data,
axes,
value = NULL,
fill = NULL,
...,
box_width = 0.18,
stratum_gap = 0.02,
fill_style = "solid",
alpha = 0.7,
strata_fill = "grey85",
label = TRUE,
label_size = 3.5,
label_colour = "grey20",
roughness = 1,
bowing = 1,
n_passes = 2L,
seed = NULL
)A list of ggplot2 layers.
A wide data frame: one column per axis, one row per observation
(or per group, with a value weight).
Character vector of column names to use as axes, in order (at least two).
Optional column name giving each row's weight (NULL = 1 each).
Optional column name whose category colours each flow (NULL =
the first axis). Add scale_fill_sketch() or any fill scale to style it.
Other arguments passed on to the flow layer.
Width of the stratum boxes in x units. Default 0.18.
Vertical gap between adjacent strata, as a fraction of
the axis total. Default 0.02; 0 stacks them flush.
Flow fill style; see geom_sketch_polygon(). Default
"solid".
Flow opacity. Default 0.7.
Fill colour of the stratum boxes. Default "grey85".
Draw stratum labels? Default TRUE.
Label text controls.
Sketch parameters.
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,
StatSketchWaterfall,
annotate_sketch(),
annotate_sketch_arrow(),
annotate_sketch_callout(),
annotate_sketch_highlight(),
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()
library(ggplot2)
df <- as.data.frame(Titanic)
ggplot() +
geom_sketch_alluvial(df, axes = c("Class", "Sex", "Survived"),
value = "Freq", seed = 1L) +
scale_fill_sketch() +
theme_void()
Run the code above in your browser using DataLab