1. Bluesky Feeds /
  2. Cédric Scherer /
  3. ggplot2

ggplot2 is an awesome! Follow this feed to stay up-to-date on the latest updates and to explore data visualizations created with this versatile graphics library. → mention `ggplot` or `ggplot2` to be featured

Feed on Bluesky

Feeds Stats

  • 💙 Liked by 12 users
  • 📅 Updated over 1 year ago
  • ⚙️ Provider skyfeed.me

ggplot2 Likes over time

Like count prediction
The feed ggplot2 has not gained any likes in the last month.

Feed Preview for ggplot2

Sonora en Datos
@sonoraendatos.bsky.social
28 minutes ago
Algunos resultados de la #ENIGH2024 de #INEGI para #Sonora: El ingreso corriente mensual promedio de los hogares sonorenses en 2024 fue de $31,574, un aumento de 13.9% respecto a 2022. #rstats #ggplot2 #dataviz
1
1
1
Josephine Kaminaga
@jkaminaga.bsky.social
about 2 hours ago
happy august! I did a little data visualization project this week trying to see what genres of books I've read and liked the most so far in 2025. (if you, like me, are a big fan of scifi + fantasy + dark academia, please give me book recs!) 🔗📚: github.com/jkaminags/bo... #ggplot2 #dataviz #Rstats
0
2
6
YawpR
@yawpr.bsky.social
about 4 hours ago
I'm trying this thing where I write as I go on a tiny project. I thought I could make a better version of the Sankey diagram? (Spoiler: it did not work out) #rstats #ggplot2
Building notes: Sankey diagrams

open.substack.com

Building notes: Sankey diagrams

I don't like Sankey diagrams for visualizing job offers. One woman's attempt to visualize it to her taste and realize her abject failure.

1
2
10
Sharon Machlis
@smachlis.bsky.social
about 7 hours ago
Daily number of Bluesky posts with the #RStats hashtag (case insensitive) Sept. 1 - Aug 1, excluding the CRAN Package Updates bot. Coded with the {bskyr} and {ggplot2} R packages. [Posted via R script and weekly cron job. Tx for your patience if something went awry] #RStatsStats
Bar chart of daily #RStats posts. Amounts range from around 25 in September 2024 to peaking over 100 some days. Latest totals were 88 yesterday and 55 the day before.
0
0
3
R-Podcast (Eric)
@rpodcast.bsky.social
about 18 hours ago
Episode 209 of R Weekly Highlights is out! serve.podhome.fm/episodep…. 🏎️ Speed testing @kellybodwin.com 🪄 Testing Plumber APIs from R (Jakub Sobolewski) 📊 Recreating NY Times chart with ggplot2 (Spencer Schien) h/t @mike-thomas.bsky.social & @jonocarroll.fosstodon.org.ap.brid.gy 🙏 #RStats
Issue 2025-W31 Highlights

serve.podhome.fm

Issue 2025-W31 Highlights

In episode 209 of R Weekly Highlights we learn ways you can pinpoint just what is slowing down your R code, a novel framing for testing your next plumber…

0
2
8
coolbutuseless
@coolbutuseless.fosstodon.org.ap.brid.gy
about 23 hours ago
#RStats Retro: This is when I implemented SVG animated textures in ggplot2
Video thumbnail
Play button
0
6
31
Rodrigo Barreiro
@rodrigo404.bsky.social
about 23 hours ago
well, i really sidetracked this weeks #tidytuesday, but finally got something i was somewhat happy with. #r4ds #dataviz #ggplot2
3
3
16
Sharon Machlis
@smachlis.bsky.social
1 day ago
New presentation just posted at today's @user-conf.bsky.social virtual conference: Plot Twist: Adding Interactivity to the Elegance of ggplot2 with ggiraph By @tanyashapiro.bsky.social & @cedricscherer.com Video www.youtube.com/watch?v=G…. #RStats #DataViz #ggplot2 #user2025
Plot Twist: Adding Interactivity to the Elegance of ggplot2 with ggiraph

www.youtube.com

Plot Twist: Adding Interactivity to the Elegance of ggplot2 with ggiraph

YouTube video by useR! Conference

2
5
26
Cédric Scherer
@cedricscherer.com
1 day ago
The virtual #user2025 event takes place today — and our talk "Plot Twist: Adding Interactivity to the Elegance of ggplot2 with ggiraph" airs is lined up next! 🎥 #rstats #ggiraph #ggplot2 #dataviz
Title slide for our talk at useR entitled "Plot Tiwst:Adding interactivity to the elegance of ggplot2 with ggiraph"
3
11
48
Bearmathik
@bearmathik.bsky.social
1 day ago
Regarding the making of this animation #rstats #RStudio 1. Everything was made with #ggplot: - 1 png for each frame - merging with av_encode_video() 2. Everything in this animation was drawn: - the bears and smileys are a set of polygons - exception: My logo (which I added with geom_image) 1/3

Did you know, that brown bears can make entire countries happier? For statistical evidence of that fact, see the animation below #rstats #ggplot #statistics #correlation #causation #Rprogramming #TidyTuesday #DataViz #RStudio (this is of course meant to be humoristic) 🧵

Video thumbnail
Play button
1
1
7
Neil Pettinger
@kurtstat.bsky.social
1 day ago
Here's a chart showing the relationship between compliance with the four-hour target (vertical axis) and compliance with the twelve-hour 'target' (horizontal axis). The achievement of both has been a rare event in Scotland in the last decade: in just seven out of the 522 weeks. #rstats #ggplot2
A chart showing all of the 522 weeks from mid-July 2015 to mid-July 2025. Each week is a blue dot. The vertical axis measures compliance with the four-hour target in Scotland's Type 1 A&E departments. The horizontal axis measures compliance with the 12-hour 'target'. Only seven of the 522 dots/weeks achieved compliance with both.
0
2
2
Luis Armando Moreno
@dogomoreno.bsky.social
2 days ago
En 2024, los hogares de #Sonora dedicaron 6.2% de su gasto al pago de electricidad y combustibles domésticos, el segundo registro más alto entre las entidades federativas. En 2020 fue el más alto con 9.7%. Mas información en: sonoraendatos.com #ENIGH2024 #ODS7 #ggplot #rstats
0
2
2
Devon Cantwell-Chavez
@devoncantwell.bsky.social
2 days ago
I was trying to troubleshoot a simple ggplot issue that I couldn't remember the quick fixes for off the top of my head and of course @andrew.heiss.phd had a published page on the topic! Another day of Andrew being an invaluable resource to the profession!
0
0
5
econmaett
@econmaett.bsky.social
2 days ago
#stats #mathsky #econsky people, I have a fun little puzzle🧩 for you! 😁 Who can tell me why model 1 and model 2 are equivalent for large values of a? 🤔 #rstats code in ALT
# phillis-curve ----
library(tidyverse)

df <- read.csv("https://ourworldindata.org/grapher/phillipss-original-curve-wage-inflation-and-unemployment.csv?v=1&csvType=full&useColumnShortNames=true") |>
  as_tibble() |>
  select(-c(Entity, Code)) |>
  set_names(c("year", "inflation", "unemployment")) |>
  mutate(year = as_factor(year), inflation = inflation * 100)

## model 1 ----
# log(y+a) = log(b) + c*log(x)
# Find optimal 'a' by maximizing R-squared
# Create sequence of potential 'a' values
# Make sure a > -min(inflation) to keep log(y+a) positive
min_inflation <- min(df$inflation)
a_min <- ifelse(min_inflation < 0, -min_inflation + 0.1, 0.1)
a_values <- seq(a_min, a_min + 100000, by = 1000)

# Find optimal a
best_r2 <- -1
best_a <- NULL
for (a in a_values) {
  temp_model <- lm(log(inflation + a) ~ log(unemployment), data = df)
  r2 <- summary(temp_model)$r.squared
  if (r2 > best_r2) {
    best_r2 <- r2
    best_a <- a
  }
}

# Fit final model 1 with optimal a
mod1 <- lm(log(inflation + best_a) ~ log(unemployment), data = df)
mod1_r2 <- summary(mod1)$r.squared

unemployment_seq <- seq(min(df$unemployment), max(df$unemployment), length.out = 100)
mod1_pred_log <- predict(mod1, newdata = data.frame(unemployment = unemployment_seq))
mod1_pred <- exp(mod1_pred_log) - best_a

p1 <- ggplot(df, aes(x = unemployment, y = inflation)) +
  geom_point(alpha = 0.6) +
  geom_line(
    data = data.frame(unemployment = unemployment_seq, inflation = mod1_pred),
    aes(x = unemployment, y = inflation), color = "red", size = 1
  ) +
  labs(
    title = paste0("Model 1: log(y+a) = log(b) + c*log(x)"),
    subtitle = paste0("R² = ", round(mod1_r2, 4), ", a = ", round(best_a, 2)),
    x = "Unemployment", y = "Inflation"
  ) +
  theme_minimal()

print(p1)
## model 2 ----
# y = b_0 + b_1*log(x)
mod2 <- lm(inflation ~ log(unemployment), data = df)
mod2_r2 <- summary(mod2)$r.squared

mod2_pred <- predict(mod2, newdata = data.frame(unemployment = unemployment_seq))

p2 <- ggplot(df, aes(x = unemployment, y = inflation)) +
  geom_point(alpha = 0.6) +
  geom_line(
    data = data.frame(unemployment = unemployment_seq, inflation = mod2_pred),
    aes(x = unemployment, y = inflation), color = "blue", size = 1
  ) +
  labs(
    title = "Model 2: y = b0 + b1*log(x)",
    subtitle = paste0("R² = ", round(mod2_r2, 4)),
    x = "Unemployment", y = "Inflation"
  ) +
  theme_minimal()

print(p2)

## check equivalence between models 1 and 2 ----
log_b <- coefficients(mod1)[[1]]
c <- coefficients(mod1)[[2]]

best_a * log(exp(log_b)/best_a)
coefficients(mod2)[[1]]

best_a * c
coefficients(mod2)[[2]]
2
2
6
Collin Berke
@collinberke.bsky.social
2 days ago
Here's my contribution to this week's #TidyTuesday data: Competing with sleep: The NETFLIX shows driving reach and engagement 📈Plot: #ggplot2 🏷️Labels: {ggrepel} ⚖️Scale text: {scales} 🔤Fonts: {sysfonts}, {showtext}, and {fontawesome} 🔗Code and data links 👇 #RStats #DataViz #tidyverse #r4ds 1/4
1
1
4