Skip to contents

Draws a hand-drawn arc diagram: nodes are placed along a horizontal line and every weighted relation is a roughened semicircle arching over (or under) the axis between its two endpoints. Like geom_sketch_chord() but linear, it is a constructor that returns a list of ordinary sketch layers (arcs, node points and handwriting labels), so it composes with +; pair it with theme_void() or theme_sketch(). Edges are coloured by their source node; add scale_colour_sketch() (or any colour scale). No new dependencies.

Usage

geom_sketch_arc_diagram(
  data,
  from,
  to,
  value,
  ...,
  nodes = NULL,
  side = c("top", "bottom"),
  node_size = 3,
  node_colour = "grey25",
  max_linewidth = 2,
  alpha = 0.7,
  label = TRUE,
  label_size = 3.5,
  label_colour = "grey20",
  roughness = 1,
  bowing = 1,
  n_passes = 2L,
  seed = NULL
)

Arguments

data

A data frame of weighted edges (one row per relation).

from, to

Unquoted column names giving the two endpoints of each edge.

value

Unquoted column name giving the edge weight. Default: every edge counts as 1 (and node size is the edge count).

...

Other arguments passed on to the arc layer.

nodes

Optional character vector fixing the node order along the axis (default: sorted unique endpoints).

side

Which way the arcs bow: "top" (default) or "bottom".

node_size, node_colour

Node-point size (scaled by incident weight) and colour.

max_linewidth

Arc stroke width at the heaviest edge (lighter edges scale down). Default 2.

alpha

Arc opacity. Default 0.7.

label

Draw node labels? Default TRUE.

label_size, label_colour

Label text controls.

roughness, bowing, n_passes, seed

Sketch parameters.

Value

A list of ggplot2 layers.

Examples

library(ggplot2)
rel <- data.frame(
  from  = c("A", "A", "B", "C", "C", "D"),
  to    = c("B", "C", "C", "D", "E", "E"),
  value = c(3, 1, 2, 4, 2, 1)
)
ggplot() +
  geom_sketch_arc_diagram(rel, from, to, value, seed = 1L) +
  scale_colour_sketch() +
  theme_void()