ggpointless
ggpointless keeps adding the ggplot2 layers nobody else bothered to write.
A side-by-side editorial comparison of ggsketch and slendr — release velocity, themes, recent moves, and the top alternatives to consider.
ggsketch stopped being a line style and became a drawing-medium simulator.
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.
Population-genetic simulation in R, opened up to selection and finally easier to install.
slendr specifies spatial and non-spatial population-genetic models in R and simulates them through SLiM or msprime, returning tree sequences that tskit then analyses. Two threads dominate the current releases: keeping in step with fast-moving backends, with SLiM 5.1, pyslim 1.1.0 and Python 3.13 now required, and reducing the setup burden that its Python dependency imposes. Version 1.5.0 adds ephemeral uv-based virtual environments, so init_env(uv = TRUE) can stand in for creating a permanent environment with setup_env().
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.
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.
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.
slendr specifies spatial and non-spatial population-genetic models in R and simulates them through SLiM or msprime, returning tree sequences that tskit then analyses. Two threads dominate the current releases: keeping in step with fast-moving backends, with SLiM 5.1, pyslim 1.1.0 and Python 3.13 now required, and reducing the setup burden that its Python dependency imposes. Version 1.5.0 adds ephemeral uv-based virtual environments, so init_env(uv = TRUE) can stand in for creating a permanent environment with setup_env().
Since the 1.0.0 release added non-neutral simulation, the work has shifted from capability to friction. A large share of recent notes concerns Python environment handling, conda activation races on Windows, dependency pruning that made shiny optional, and argument names that misled users, as when gene_flow()'s rate argument turned out to mean total ancestry proportion rather than a rate. That is the profile of a package whose scientific surface is settled and whose remaining problems are the ones users actually hit.
Expect the uv-based environment path to move from fallback to default once it has proven itself, given the notes already describe an environment variable for making it so. The deprecated rate argument in gene_flow() is explicitly slated for removal in a future major release, which is the clearest signal here of what a 2.0 would contain.
Other Infra & APIs products tracked by Sparkpulse, ranked by recent ship velocity. Each card links to a full editorial trajectory and lets you pivot into a head-to-head comparison with either ggsketch or slendr.
ggpointless keeps adding the ggplot2 layers nobody else bothered to write.
mpactr spent two spring releases normalizing case in metadata after users kept tripping on it.
surveytidy taught every dplyr verb to operate on a whole collection of surveys at once.
surveycore declared its API stable with every survey design type covered.
PEIMAN2 cut its annotation database loose from its release cycle without breaking CRAN.
prospectr spent its biggest release in years fixing spectra it had been quietly mangling.
See all ggsketch alternatives → · See all slendr alternatives →
Latest ship moves from both products, interleaved chronologically. ⚡ = editorial spark.
They serve adjacent needs but don't currently overlap on shipped themes. ggsketch and slendr are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). See the at-a-glance table above for a side-by-side breakdown of velocity, recent sparks, and editorial themes.
Sparkpulse doesn't pick a winner — we score release velocity, not feature parity. ggsketch and slendr are shipping at a similar cadence (velocity 0.0 vs 0.0, both within Sparkpulse's "active" band). For your specific use case, the alternatives sections above list other Infra & APIs products to evaluate alongside.
Top ggsketch alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "ggsketch alternatives" section above for the current picks, or visit /alternatives/ggsketch for the full list with editorial commentary on each.
Top slendr alternatives in Infra & APIs are ranked by recent ship velocity. Browse the "slendr alternatives" section above for the current picks, or visit /alternatives/slendr for the full list with editorial commentary on each.