Skip to contents

A hand-drawn take on network/graph plotting. geom_sketch_edge() draws a roughened connector between (x, y) and (xend, yend); geom_sketch_node() draws roughened node markers with optional handwriting labels. Pair them with sketch_graph(), which computes node positions with a pure-R force-directed layout (force_layout()) and returns the two data frames these geoms expect - no graph package required.

Usage

GeomSketchEdge

geom_sketch_edge(
  mapping = NULL,
  data = NULL,
  stat = "identity",
  position = "identity",
  ...,
  curvature = 0,
  roughness = 1,
  bowing = 1,
  n_passes = 2L,
  seed = NULL,
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE
)

GeomSketchNode

geom_sketch_node(
  mapping = NULL,
  data = NULL,
  stat = "identity",
  position = "identity",
  ...,
  roughness = NULL,
  bowing = NULL,
  n_passes = 2L,
  seed = NULL,
  label_size = 3.2,
  label_colour = "grey15",
  label_family = NULL,
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE
)

Arguments

mapping

Aesthetic mappings created by ggplot2::aes().

data

Data to display. For geom_sketch_edge() the rows need x/y/xend/yend; for geom_sketch_node() they need x/y (and an optional label). Typically the $edges and $nodes from sketch_graph().

stat, position

Statistical transformation and position adjustment. Default "identity" for both.

...

Other arguments passed on to the layer. For geom_sketch_node() these include the fill settings of geom_sketch_point() (fill_style, hachure_angle, hachure_gap, fill_weight, fill_roughness and fill_seed), which hatch the filled shapes 21-25.

curvature

Edge bend. 0 (default) draws straight roughened edges; non-zero gives arc edges (a quadratic Bezier), like geom_sketch_curve().

roughness, bowing, n_passes, seed

Sketch parameters; see geom_sketch_path(). For geom_sketch_node(), roughness is a mappable aesthetic (per node).

na.rm

Remove missing values silently? Default FALSE.

show.legend, inherit.aes

Standard layer arguments.

label_size

Handwriting label size (mm). Default 3.2.

label_colour

Label colour. Default "grey15".

label_family

Label font family. Defaults to the first installed handwriting face (as geom_sketch_text() uses).

Value

A ggplot2 layer object.

See also

sketch_graph(), force_layout().

Other sketch-geoms: GeomSketchAbline, GeomSketchArrow, GeomSketchBoxplot, GeomSketchBracket, GeomSketchCallout, GeomSketchChicklet, GeomSketchCol, GeomSketchContourFilled, GeomSketchCurve, GeomSketchDotplot, GeomSketchDumbbell, GeomSketchEllipse, GeomSketchEngrave, GeomSketchGantt, GeomSketchHex, GeomSketchLine, GeomSketchLinerange, GeomSketchLollipop, GeomSketchMarkCircle, GeomSketchMarkHull, GeomSketchNote, 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(), annotate_sketch_note(), 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_point_interactive(), geom_sketch_qq(), geom_sketch_quantile(), geom_sketch_rose(), geom_sketch_sunburst(), geom_sketch_text(), sketch_graph()

Examples

library(ggplot2)
edges <- data.frame(
  from = c("A", "A", "B", "C", "C", "D"),
  to   = c("B", "C", "C", "D", "E", "E")
)
g <- sketch_graph(edges, seed = 1L)
ggplot() +
  geom_sketch_edge(data = g$edges,
                   aes(x = x, y = y, xend = xend, yend = yend), seed = 1L) +
  geom_sketch_node(data = g$nodes,
                   aes(x = x, y = y, label = name), size = 6, seed = 2L) +
  coord_equal() +
  theme_void()