I'll be presenting Gribouille (Grammar-of-graphics for Typst) next Tuesday (the 30th of June at 5.30pm CEST) at the #ggplot2 extenders meetup. @teunbrand.bsky.social will be also presenting ggsql (Grammar-of-graphics for SQL), so you have two good reasons to join! bit.ly/join-gg-exte...
Teun van den Brand
@teunbrand.bsky.social
GitHub: https://github.com/teunbrand
Do you love maps? Of course you do! With the latest release of #ggsql we now support spatial plotting directly from your database. As a cherry on top, the release also provides powerful in-layer aggregation. Read all about it on the blog
ggsql 0.4.1: Spatial plotting and in-layer aggregation
ggsql 0.4.1 adds support for spatial plotting and data aggregation within layers. Read all about the new features in this release post.
opensource.posit.co
I made this & immediately doubted all of my ggplot source code knowledge, especially since the source code for Geom____$default_aes changed so much in the last major package release 🥹 Did you know making short-form videos is extremely hard? 😂 #rstats #ggplot2 #databs youtube.com/shorts/beajd...
Did you know Hadley Wickham hates theme_minimal()?
YouTube video by Posit PBC
youtube.com
Hey #rstats spatial people: what map projections / EPSG codes do you use most? Asking for a thing.
Hey @thomasp85.com @teunbrand.bsky.social, I created a chart builder built on top of #ggsql: plotr.org. Sort of the ggsql Esquisse version :) Would love to hear what you think! It's still very much experimental though.
plotr — A ggsql chart builder
plotr.org
I'm please to celebrate that legendry 0.3.0 has hit the streets on CRAN 🎉 Legendry is a ggplot2 extension that lets you draw more guides. Read about all the guide goodness in this minor update here: teunbrand.github.io/teunbrand_bl... #rstats #ggplot2
Symbolic update – Blog | Teun van den Brand
The latest and greatest in guide fashion.
teunbrand.github.io
quick problem-solving note about loops and ggplot2 www.tjmahr.com/notes/2026-0...
ggplot2 loops and delayed evaluation in aes()
This note solves a problem faced by Josiah Parry (relevant gist and Bluesky post) Generating a series of plots with ggplot2 and a for-loop can lead to unexpected results, as in the following example:
tjmahr.com
📊 Five #ggplot2 functions I wish I'd known about earlier 📊 I've written a short blog (with examples) of some of the lesser-known {ggplot2} functions and arguments that make it easier to create better charts! Link: nrennie.rbind.io/blog/five-gg... #RStats #DataViz
Five ggplot2 functions I wish I’d known about earlier – Nicola Rennie
There are a few small tweaks you can make to your ggplot2 code to improve your charts. However, they’re not often mentioned. So here’s a few functions and arguments I wish I’d known about earlier.
nrennie.rbind.io
The Grammar of Graphics for SQL – and it’s for real! 😅 #ggsql brings the Grammar of Graphics to SQL - developed by the team behind ggplot2 at Posit. No need to switch to another tool to create nice charts once you have queried your database. #30DayChartChallenge | Day 22 - New tool #dataviz 📊
Yesterday we announced the alpha release of #ggsql 🎉 In celebration, here is a ggsql plot for #TidyTuesday Week 16 of 2026, using a dataset on global health spending! 💰 ggsql source: gist.github.com/georgestagg/...
I've been working on this over the last few months and in my opinion it is just beyond cool. Grammar of graphics for SQL users!
I am excited beyond description to lift the veil on what we have been working on in 2026: Please meet ggsql! A new extension of the SQL language for creating visualisations using the grammar of graphics. Read all about it in the blog post or visit the website at ggsql.org
I am excited beyond description to lift the veil on what we have been working on in 2026: Please meet ggsql! A new extension of the SQL language for creating visualisations using the grammar of graphics. Read all about it in the blog post or visit the website at ggsql.org
ggsql: A grammar of graphics for SQL
Introducing ggsql, a grammar of graphics for SQL that lets you describe visualizations directly inside SQL queries.
opensource.posit.co
Some of the test cases for the native LaTeX math expression parser and renderer I've been working on for textshaping which will soon bring native math equation rendering to #rstats and marquee
dplyr 1.2.0 is out now and we are SO excited! - `filter_out()` for dropping rows - `recode_values()`, `replace_values()`, and `replace_when()` that join `case_when()` as a complete family of recoding/replacing tools These are huge quality of life wins for #rstats! tidyverse.org/blog/2026/02...
dplyr 1.2.0
dplyr 1.2.0 fills in some important gaps in dplyr's API: we've added a new complement to `filter()` focused on dropping rows, and we've expanded the `case_when()` family with three new recoding and re...
tidyverse.org
# pretty slick l <- c(mpg = "Miles per gallon", wt = "Weight (1,000 lbs)", `mpg/2` = "yes this works") ggplot(mtcars, aes(mpg, wt)) + labs(dictionary = l) ggplot(mtcars, aes(wt, mpg)) + labs(dictionary = l) ggplot(mtcars, aes(wt, mpg/2)) + labs(dictionary = l)
This is a very good primer on why we encounter breaking changes whenever ggplot2 has a meaningful update 🙃
But sometimes that's not an option. For example, if the plot was created through a function in another package that you can't easily edit. Instead, we can update values stored in the plot object. (Another reason to save your ggplot2 charts as variables instead of just printing the output!)
You can specify relative position in ggplot with I(x) I(y). E.g. annotate("text", x = I(.5), y = I(.5), label = "hello!") will place the text in the middle of the plot. This, combined with alignment arguments is like 87% of the magic for me.
lukewarm take, but plotly is uggy and ggplotly should generally be avoided for disrespecting your static ggplot2 formatting (use ggiraph instead)
I ignored the strip.clip argument in #ggplot2 for way too long 😲 Combined with a small negative margin tweak, you can place facet labels inside each panel. A tiny trick that makes small multiples feel so much cleaner. 🔵 no manual coordinates 🔵 inherits theme styling 🔵 scales nicely when resizing
Everyone can now view my posit::conf 2025 talk "purrrfectly parallel, purrrfectly distributed"! {purrr} now lets you access the magic of {mirai} directly, as the modern way to make things faster through parallel computation in #rstats. youtu.be/j1yHjMvbnQM?...
Purrrfectly parallel, purrrfectly distributed (Charlie Gao, Posit) | posit::conf(2025)
YouTube video by Posit PBC
youtu.be
testthat 3.3.0 out now! This is a massive release with tons of improvements including better failure messages, new expectations, improved snapshotting, new vignettes, and much much more: tidyverse.org/blog/2025/11... Post includes some thoughts on developing an #rstats package with Claude Code.
testthat 3.3.0
testthat 3.3.0 brings improved expectations with better error messages, new expectations for common testing patterns, and lifecycle changes including the removal of `local_mock()` and `with_mock()`. I...
tidyverse.org
I wrote a lil post on the amazing work that @ginareynolds.bsky.social does championing ggplot2 extension developers and teaching others to build their own! The post features the Scrollytelling Quarto extension and the group's cute #RStats hex 🐱: rworks.dev/posts/ggplot...
An Introduction to Writing Your Own ggplot2 Geoms – R Works
The ggextenders club provides inspiration and resources for those venturing into the exciting world of creating custom ggplot2 extensions.
rworks.dev
My top 5 ggplot2 4.0.0 updates (well hidden in the NEWS) and their usage: #rstats (there's so much to unpack!) 🙌
I'm excited to share a new version of the Air formatter for #rstats, with support for tabular formatting! Super useful with `tibble::tribble()` calls or `data.table::fcase()`. It's currently experimental as we're looking to get feedback on the feature, so please let us know what you think.