Sign in

Teun van den Brand

@teunbrand.bsky.social
984 followers 95 following 195 posts

GitHub: github.com/teunbrand

PostsRepliesMedia
Reposted by Teun van den Brand
Emil Hvitfeldt @emilhvitfeldt.bsky.social · 25/09/2026
quarto revealjs magic move now (fairly) seamlessly animated between generated charts from ggplot2, base R, lattice, matplotlib, seaborn, Altair, and Plots.jl set the device to svg, add the .magic-move class and you are good to go! emilhvitfeldt.com/post/quarto-... #quarto #slidecrafting
0222
Reposted by Teun van den Brand
Thomas Lin Pedersen @thomasp85.com · 24/09/2026
As announced at posit::conf(2026) #ggsql is now, with the release of version 0.5.0, in Beta. I'm so excited for the future of this project. Read all about what the latest version brings you in the release post
opensource.posit.co
ggsql 0.5.0: Readers, Writers, and Beta status
Announcing ggsql 0.5.0, with new readers and writers for getting data in and out, and the project's graduation to beta status.
14814
Reposted by Teun van den Brand
Daniel de Kadt @dandekadt.bsky.social · 24/09/2026
Today we announce the Claude-led creation of a sweet sweet ggplot2 that we suspect could represent a new frontier in dataviz. Its precise function, technological utility (if any), or level of significance is not yet clear, but at minimum it is work I would have been proud to do as a PhD student.
121
Reposted by Teun van den Brand
Nicola Rennie @nrennie.bsky.social · 22/09/2026
A question for the #RStats and #ggplot2 hivemind: What things do you find most tricky or frustrating in ggplot2? It might be things like specific chart types, aspects of styling, your workflow, saving charts etc.
13188
Reposted by Teun van den Brand
Thomas Lin Pedersen @thomasp85.com · 15/09/2026
I’ll be presenting our work on #ggsql today at #PositConf2026 It will be lovely and whimsical and I hope you’ll join both if your are new to ggsql or have been following along since the spring
ggsql.org
ggsql
1101
Teun van den Brand @teunbrand.bsky.social · 07/09/2026
Also added to development version of ggsql too 🫡 Try it out in interactive examples at ggsql.org/syntax/coord.... ``` VISUALISE continent AS fill FROM ggsql:world DRAW spatial PROJECT TO equal_earth ```
Map of the world with countries coloured by continent. The map has the Equal Earth projection.
0234
Reposted by Teun van den Brand
Michael Friendly @datavisfriendly.bsky.social · 07/09/2026
#rstats #dataviz ggbiplot 0.6.5 is now on CRAN 🎉 ggplot2 biplots for PCA/LDA. Variable vectors are now drawn with the ggarrow package @teunbrand.bsky.social — nicer arrowheads out of the box, with varname.gap/vector.args to fine-tune them. friendly.github.io/ggbiplot/
friendly.github.io
A Grammar of Graphics Implementation of Biplots
A ggplot2 based implementation of biplots, giving a representation of a dataset in a two dimensional space accounting for the greatest variance, together with variable vectors showing how the data var...
0131
Reposted by Teun van den Brand
Hadley Wickham @hadley.nz · 05/09/2026
It brings a smile to my face every time I see a paper using ggplot2 😀
2795
Reposted by Teun van den Brand
Gina Reynolds, Human-Data Interaction 📊🛠 @ginareynolds.bsky.social · 04/09/2026
Thrilled to be welcoming Kaitlin Henze to the #ggplot2extenders meetup next Tues, at 12 noon ET. Storytelling with Data's work tends to be tool agnostic, but how can/should it inform extension? We're so looking forward to hearing from Kaitlin! 🚀📊🙏
042
Teun van den Brand @teunbrand.bsky.social · 03/09/2026
Folks, hot off the press here are a few plots about what the new ggarrow update can do: teunbrand.github.io/teunbrand_bl... I'll also tease them below #rstats #ggplot2
Plot where four arrows connect three points. Two points are connected via double arrows pointing in opposite directions.Plot where four arrows connect three points. Arrowheads are one sided/halved. One connection has two arrows in opposite directions, giving the impression of a compound arrow with half-arrowheads at opposite ends.Plot with four arrows connecting three points. The shafts of the arrows are squiggly lines.
15211
Reposted by Teun van den Brand
Joachim Schork @joachimschork.bsky.social · 20/08/2026
The ggh4x package is an extension for ggplot2 that enhances the flexibility of creating complex and customizable visualizations. Visualization: teunbrand.github.io/ggh4x/ More details: statisticsglobe.com/online-cours... #package #tidyverse #datasciencecourse #visualanalytics #rstudio #ggplot2
094
Reposted by Teun van den Brand
Gina Reynolds, Human-Data Interaction 📊🛠 @ginareynolds.bsky.social · 12/08/2026
Really looking forward to a conversation with @matthewkling.bsky.social about the new #ggplot2->3D extension, ggcube. 📦🙂 A week from today, Wed 19th, 12 noon ET. 📊
022
Reposted by Teun van den Brand
Mickaël CANOUIL, Ph.D. @mickael.canouil.fr · 26/06/2026
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...
No alternative text description for this imageComic book style title slide with a red, yellow, and pink sunburst background.  Bold yellow text outlined in black reads "The Grammar of Graphics Assembles".  Below it, a blue ribbon banner reads "R, Python, SQL... and now" next to a red starburst badge containing the word "Typst" in yellow.  Underneath, a white box reads "Mickaël Canouil, Ph.D." and a smaller white box below it reads "2026-06-30".
1113
Reposted by Teun van den Brand
Thomas Lin Pedersen @thomasp85.com · 23/06/2026
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
opensource.posit.co
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.
08122
Reposted by Teun van den Brand
Gina Reynolds, Human-Data Interaction 📊🛠 @ginareynolds.bsky.social · 15/06/2026
It's tomorrow!! 🤩 #ggplot2 #rstats
092
Reposted by Teun van den Brand
Libby Heeren @libbyheeren.bsky.social · 09/06/2026
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...
youtube.com
Did you know Hadley Wickham hates theme_minimal()?
YouTube video by Posit PBC
7516
Teun van den Brand @teunbrand.bsky.social · 21/05/2026
Hey #rstats spatial people: what map projections / EPSG codes do you use most? Asking for a thing.
962
Reposted by Teun van den Brand
Artur Carvalho @artur.carva.lu · 20/05/2026
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.org
plotr — A ggsql chart builder
1103
Teun van den Brand @teunbrand.bsky.social · 13/05/2026
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
teunbrand.github.io
Symbolic update – Blog | Teun van den Brand
The latest and greatest in guide fashion.
25714
Teun van den Brand @teunbrand.bsky.social · 07/05/2026
Just as I struggled to get a nice radar plot going
Cat looking sad.
040
Teun van den Brand @teunbrand.bsky.social · 06/05/2026
Posted without further comment
040
Reposted by Teun van den Brand
tj mahr 🤘 @tjmahr.com · 04/05/2026
quick problem-solving note about loops and ggplot2 www.tjmahr.com/notes/2026-0...
tjmahr.com
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:
0173
Reposted by Teun van den Brand
Nicola Rennie @nrennie.bsky.social · 29/04/2026
📊 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
nrennie.rbind.io
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.
616549
Reposted by Teun van den Brand
Ansgar Wolsing @ansgarw.bsky.social · 23/04/2026
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 📊
A chart showing how the new registrations of BEV developed in Germany between January 2017 and March 2026. From a share below 1 % there were major drivers that a highlighted with annotations:
- June 2020: Purchase incentive introduced.
- Fall 2021: Rush to secure purchase incentive before scheduled 2021 expiry and government change.
Dec 2022: Last chance for maximum incentive before rates decreased in Jan 2023.
Aug 2023: Final month for incentive for commercial buyers; private buyers only thereafter.
Dec 2023: Immediate termination of all EV subsidies following federal budget ruling.
2024-25: Organic growth from 10 percent to 24 percent.
Share of Tesla cars is added from 2021 onwards, showing a typical pattern of a weak first month of the quarter, followed by two stronger months. The share increased up to 6 percent until mid 2023, since then it has declined. Strong uptick in March 2026 (about 3 percent of total new registrations).
14912
Reposted by Teun van den Brand
George Stagg @gws.phd · 21/04/2026
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/...
A plot showing out-of-pocket payments as a percent of total health spending for many countries over time. Countries are grouped using 2022 World Bank income classifications. Reliance on out-of-pocket payments for health care is falling, but many countries still face heavy burdens
0122
Reposted by Teun van den Brand
George Stagg @gws.phd · 20/04/2026
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!
16315
Reposted by Teun van den Brand
Thomas Lin Pedersen @thomasp85.com · 20/04/2026
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
opensource.posit.co
ggsql: A grammar of graphics for SQL
Introducing ggsql, a grammar of graphics for SQL that lets you describe visualizations directly inside SQL queries.
1338886
Reposted by Teun van den Brand
Thomas Lin Pedersen @thomasp85.com · 17/03/2026
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
Four complex equations shown in a grid, with their LaTeX representation shown above and the rendered expression below
310314
Teun van den Brand @teunbrand.bsky.social · 27/02/2026
Never change #rstats, never change
A screenshot of two reply messages on bluesky commenting on the same post. The reply on top is very negative about the data.table package, saying 'it was just the worst'. The bottom reply instead claims that data.table's syntax is the best thing produced in #rstats.
0513
Reposted by Teun van den Brand
Peter Licari @peterlicari.bsky.social · 23/02/2026
How can you say this when theme_barbie() exists? (cc @matthewbjane.bsky.social)
1101
Reposted by Teun van den Brand
Gina Reynolds, Human-Data Interaction 📊🛠 @ginareynolds.bsky.social · 11/02/2026
'ignored positional aesthetics' are so handy and cool, wanted to share on bsky! (as seen on mastodon 🙃) #rstats #ggplot2
0151
Reposted by Teun van den Brand
Davis Vaughan @davisvaughan.bsky.social · 04/02/2026
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...
tidyverse.org
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...
12463133
Reposted by Teun van den Brand
tj mahr 🤘 @tjmahr.com · 29/01/2026
# 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)
2386
Teun van den Brand @teunbrand.bsky.social · 21/01/2026
This is a very good primer on why we encounter breaking changes whenever ggplot2 has a meaningful update 🙃
1110
Reposted by Teun van den Brand
Mattan S. Ben-Shachar @mattansb.msbstats.info · 26/12/2025
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.
311130
Reposted by Teun van den Brand
Mark Rieke @markjrieke.bsky.social · 05/01/2026
lukewarm take, but plotly is uggy and ggplotly should generally be avoided for disrespecting your static ggplot2 formatting (use ggiraph instead)
292
Reposted by Teun van den Brand
Cédric Scherer @cedricscherer.com · 12/12/2025
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
Side-by-side comparison of two multi-panel bubble charts faceted by world region. The left column shows the default facet labels placed above each panel (“Africa”, “Americas”, “Asia”, “Europe”, “Oceania”). The right column shows the same charts, but the facet labels are moved inside each panel at the top-left using a negative margin. In the center, there is a title reading “Want to place your facet labels inside each panel?” with an arrow pointing right, followed by a short ggplot2 theme code snippet demonstrating how to move strip text inside the panel.
724140
Reposted by Teun van den Brand
Charlie Gao @shikokuchuo.net · 17/11/2025
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?...
youtu.be
Purrrfectly parallel, purrrfectly distributed (Charlie Gao, Posit) | posit::conf(2025)
YouTube video by Posit PBC
1273
Reposted by Teun van den Brand
Hadley Wickham @hadley.nz · 13/11/2025
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.
tidyverse.org
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...
19115
Reposted by Teun van den Brand
Isabella Velásquez @ivelasq3.bsky.social · 03/11/2025
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...
rworks.dev
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.
16816
Reposted by Teun van den Brand
Lorenzo Gaborini @lgaborini.bsky.social · 03/11/2025
My top 5 ggplot2 4.0.0 updates (well hidden in the NEWS) and their usage: #rstats (there's so much to unpack!) 🙌
162
Reposted by Teun van den Brand
Lionel Henry @lionelhenry.bsky.social · 21/10/2025
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.
713631
Reposted by Teun van den Brand
Calle Börstell @cborstell.bsky.social · 20/10/2025
UK weather data #TidyTuesday Temperature changes over time and some individual temperature extremes highlighted on map 🌡🇬🇧 Code: github.com/borstell/tid... #DataViz ##ggplot2
A line chart showing temperature changes (daily min and max readings) from 22 weather stations across the UK. The line charts include model fit lines showing average temperatures across stations over time (1970 to 2024), showing the estimated average increase at the right margin (about +1.5 degrees Celsius). On the right of the line chart, there is map of the UK showing the location of each weather station. Four of them are marked with annotations showing the highest (Cambridge, 2008) and lowest (Newton Rigg, 2010) monthly means and the hottest January (Yeovilton, 1990) and coldest July (Lerwick, 1993). Data: UK Met Office via TidyTuesday; Packages: {tidyverse, geomtextpath, ggarrow, ggtext, glue, rnaturalearth, scales}; Visualization: C. Börstell.
0305
Teun van den Brand @teunbrand.bsky.social · 08/10/2025
ggiraph is also what I used to make the first plot in this post! www.tidyverse.org/blog/2025/10...
tidyverse.org
ggplot2 styling
This post discusses one function in ggplot2: `theme()`. Find out about the glamour of graphics in this deep-dive article.
191
Reposted by Teun van den Brand
Alex Kraieski @kraieski.dev · 03/10/2025
So far I really like ggplot2 4.0.0 a lot, but the color blending with ink/paper means you can end up with too little contrast in your axis text. Luckily, you can easily detect this with {colorspace} to prevent accessibility issues. see blog for more info kraieski.dev/ggplot2-40-i... #Rstats
kraieski.dev
ggplot2 4.0 Ink and Paper: Don’t Forget about Axis Text Contrast — Alex Kraieski
ggplot2 4.0.0 has introduced some very useful improvements to themes, but there's at least one color blending and accessibility pitfall you'll want to avoid.
0103
Reposted by Teun van den Brand
Gina Reynolds, Human-Data Interaction 📊🛠 @ginareynolds.bsky.social · 02/10/2025
📊💿🧡🎉 Exciting news!! 'Release party' tomorrow Friday Oct 3rd at 3pm Eastern for #ggplot2 v4.0.0! With developer and maintainer @teunbrand! bit.ly/join-gg-exte...
0157
Teun van den Brand @teunbrand.bsky.social · 01/10/2025
Take your plots from drab to fab! #ggplot2
0153
Reposted by Teun van den Brand
Posit @posit.co · 30/09/2025
The new ggplot2 4.0.0 is here! 🎉 This major update includes a foundational rewrite of S7 and user benefits such as smarter labeling and a revamped theming system. Check the details: www.tidyverse.org/blog/2025/09... BONUS: Join the release party on Oct 3, 3pm ET. bit.ly/join-gg-extenders #RStats
ggplot2 hex with tada emoji. Text: Join the v4.0.0 release party with Teun van den Brand and the ggplot2 extenders, Oct 3 at 3pm Et, bit.ly/join-gg-extenders
29033
Teun van den Brand @teunbrand.bsky.social · 25/09/2025
I'm updating the ggarrow logo. Left is new, right is old. I like that the new one is chaotic, but also recognisable as ggplot2-related due to the background grid and default colour palette. The familiarity counters the chaos. #rstats #ggplot2
Shows 6 arrows with different hues spiralling outward from the middle of a hexagon. The background is a ggplot2 grid. In the foreground, 'ggarrow' is written horizontally and the 'A' coincides with the arrow head of a 7th arrow.A yellow hexagon with 3 black arrows pointing upwards reaching different heights. The text 'ggarrow' is placed horizontally, such that the 'A' consides with one of the arrow heads.
2270
Reposted by Teun van den Brand
Julian Barg @jbarg.bsky.social · 24/09/2025
Just saw my profile among the list of contributors to ggplot2 4.0.0 - that is a project I want to be affiliated with for sure. Pretty sure it's just for a ticket I opened. It was resolved within a record two days or something, too. The beauty of a well-running free and open-source software project.
tidyverse.org
ggplot2 4.0.0
A new major version of ggplot2 has been released on CRAN. Find out what is new here.
151