← Back to all sparks
G

ggsketch

INFRA · APIS
Velocity0.0

Grammar-Native Hand-Drawn Geoms for 'ggplot2'

ggsketch stopped being a line style and became a drawing-medium simulator.

ggplot2-extensionshand-drawn-renderingdrawing-mediar-graphicslayout-correctness
Current state
ggsketch is a ggplot2 extension that renders plots as if drawn by hand. Through the 1.x line that meant one thing: roughening outlines and fills with configurable jitter. The 2.0.0 release published in July reframes the package around simulated drawing media — pen, chisel-tip highlighter, airbrush — and simulated paper grounds, with the sketch geoms inheriting whichever medium is set.
Where it's heading
The maintainer states 2.0.0 is the engine for a series, and the release notes read that way: the medium sampler and the paper renderer are new Layer-1/Layer-2 primitives that every existing geom picks up for free. The second thread is correctness under real plot layouts — corner-aware label repulsion, boundary densification so bars bend under polar coordinates, reserved panel room so edge labels stop clipping. Geom coverage keeps widening in parallel, with chicklet charts the newest addition.
Prediction
Expect the rest of the 2.x series to add media on top of the new sampler rather than more geoms, since that is where 2.0.0 put the extensibility. The default hachure-pitch change already shifts existing output slightly, so a follow-up patch tuning those defaults against real plots is likely.

Recent moves

  1. 1mo ago

    Spray, highlighter and paper grounds turn plots into drawings

    ⚡ SPARK

    This is the release where ggsketch's capability surface changes shape: media and grounds become the organizing idea, and the 1.x roughness work becomes one setting among several. Everything else in the release — chicklet geoms, corner-aware repulsion, polar-coordinate bending — rides on primitives introduced here.

    View source ↗
  2. 1mo ago

    Roughness becomes a mappable aesthetic; fills get their own seed

    The last substantial 1.x release, and in hindsight a step toward 2.0.0's medium model: roughness stops being a fixed layer parameter on the per-shape geoms and becomes something you map from data. Splitting fill_roughness and fill_seed from the outline is the same move at a smaller scale.

    View source ↗
  3. 1mo ago

    Rough theme frame, sketch colour scales and scribble fill

    A grab of styling additions — a roughened theme frame, sketch-specific colour scales, a scribble fill and reproducible font handling — pointing at NEWS.md rather than detailing them. Incremental widening of the 1.x styling vocabulary before the 2.0 rewrite.

    View source ↗