Skip to contents

Draws a roughened, hand-drawn path connecting observations in order. Equivalent to geom_path() with a sketch aesthetic.

Usage

GeomSketchPath

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

Arguments

mapping

Set of aesthetic mappings created by ggplot2::aes().

data

Data to display.

stat

Statistical transformation (default "identity").

position

Position adjustment (default "identity").

...

Other arguments passed on to the layer.

roughness

Non-negative roughness parameter (0 = straight). Default 1.

bowing

Non-negative bowing multiplier. Default 1.

n_passes

Number of stroke passes for the double-stroke effect. Default 2.

seed

Integer seed for reproducibility. NULL uses getOption("ggsketch.seed", 1L).

medium

Drawing medium for the stroke: one of sketch_media() ("pen", "ink", "fountain_pen", "ballpoint", "brush", "pencil", "charcoal", "pastel", "chalk", "marker", "highlighter", "crayon", "spray"). NULL (default) uses "pen", the classic constant-width double stroke; most others render through the variable-width stroke_ribbon() engine (tapered ink, brushy swells, grainy pencil/charcoal, dusty chalk, a translucent highlighter band, ...), and "spray" renders as a soft airbrush dot cloud (sketch_spray_grob()). medium is also a mappable aesthetic: map it with aes(medium = ) (one medium per group) and control the mapping with scale_medium_discrete().

na.rm

If FALSE (default), missing values are removed with a warning.

show.legend

Logical. Should this layer be included in the legend?

inherit.aes

If FALSE, override the default aesthetics.

Value

A ggplot2 layer object.

Pressure

Map aes(pressure = ) to a variable to make the stroke swell and thin along the line, like a pen pressed harder in places. The line is then drawn through the variable-width stroke_ribbon() engine even under the default medium = "pen", and combines with any non-pen medium (their width profiles multiply). The mapped values are rescaled by scale_pressure_continuous(); wrap in base::I() for raw multipliers.

Examples

library(ggplot2)
ggplot(economics, aes(date, unemploy)) +
  geom_sketch_path(roughness = 1.5, seed = 42L)


# Stroke width tracks a variable along the line.
ggplot(economics[1:150, ], aes(date, unemploy, pressure = unemploy)) +
  geom_sketch_path(linewidth = 1, seed = 42L)