Draws a hand-drawn sunburst: a hierarchy rendered as nested rings of annular
sectors. The columns named in levels define the hierarchy outermost-to-
innermost (levels[1] is the inner root ring); each deeper ring splits its
parent's angular span by the children's summed value, so a child always
nests inside its parent. Like geom_sketch_chord() it is a constructor
returning a list of ordinary sketch layers (roughened annular sectors plus
optional labels), so it composes with +; pair it with coord_equal() and
theme_void(), and add scale_fill_sketch() (or any fill scale) to colour
it. Reuses no new dependencies (cf. sunburstR, plotly).
geom_sketch_sunburst(
data,
levels,
value = NULL,
...,
r0 = 0.15,
ring_width = NULL,
fill_by = c("root", "self", "depth"),
fill_style = "solid",
alpha = 0.9,
colour = "grey30",
label = FALSE,
label_size = 3,
label_colour = "grey20",
min_label_angle = 0.15,
roughness = 1,
bowing = 1,
n_passes = 2L,
seed = NULL
)A list of ggplot2 layers.
A data frame, one row per observation (or per leaf).
Character vector of column names giving the hierarchy, from the inner root ring outward (at least one).
Optional column name giving the leaf weight (NULL = every row
counts as 1).
Other arguments passed on to the sector layer.
Radius of the central hole, in the unit circle. Default 0.15.
Radial width of each ring. NULL (default) divides the
space r0..1 evenly across the levels.
What the sector fill encodes: "root" (default, the top-level
ancestor - the classic sunburst look), "self" (each node's own label), or
"depth" (the ring number).
Sector fill style; see geom_sketch_polygon(). Default
"solid".
Sector fill opacity. Default 0.9.
Sector outline colour. Default "grey30".
Draw a label on each sector? Default FALSE (sunbursts get busy;
only sectors with a wide enough angle are labelled).
Label text controls.
Minimum angular span (radians) a sector needs before it is labelled. Default 0.15.
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_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_text(),
sketch_graph()
library(ggplot2)
df <- data.frame(
region = c("West", "West", "West", "East", "East", "East"),
dept = c("Sales", "Sales", "Eng", "Sales", "Eng", "Eng"),
team = c("A", "B", "C", "D", "E", "F"),
n = c(4, 2, 6, 3, 5, 1)
)
ggplot() +
geom_sketch_sunburst(df, levels = c("region", "dept", "team"),
value = "n", seed = 1L) +
scale_fill_sketch() +
coord_equal() +
theme_void()
Run the code above in your browser using DataLab