Skip to contents

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).

Usage

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
)

Arguments

data

A data frame, one row per observation (or per leaf).

levels

Character vector of column names giving the hierarchy, from the inner root ring outward (at least one).

value

Optional column name giving the leaf weight (NULL = every row counts as 1).

...

Other arguments passed on to the sector layer.

r0

Radius of the central hole, in the unit circle. Default 0.15.

ring_width

Radial width of each ring. NULL (default) divides the space r0..1 evenly across the levels.

fill_by

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).

fill_style

Sector fill style; see geom_sketch_polygon(). Default "solid".

alpha

Sector fill opacity. Default 0.9.

colour

Sector outline colour. Default "grey30".

label

Draw a label on each sector? Default FALSE (sunbursts get busy; only sectors with a wide enough angle are labelled).

label_size, label_colour

Label text controls.

min_label_angle

Minimum angular span (radians) a sector needs before it is labelled. Default 0.15.

roughness, bowing, n_passes, seed

Sketch parameters.

Value

A list of ggplot2 layers.

Examples

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()