@datavisfriendly.bsky.social
ASA Fellow; #rstats developer of graphical methods for categorical and multivariate data; #datavis history of data visualization; #historicaldatavis; Milestones project Web: www.datavis.ca GitHub: github.com/friendly
Hard to believe CRAN accepted a package with such a similar name to the widely used 'colorspace' π¦
05.03.2026 02:21 β π 10 π 2 π¬ 3 π 0B/W photo of Alban William Housego Phillips
Plot of the rate of change of wage rates on the Y axis vs. unemployment. The inverse relation suggest a tradeoff
The cyclic relationship becomes clearer when the points are connected in time order
#TodayinHistory #dataviz #Onthisday #OTD π
πMar 4, 1975 Alban William Housego Phillips died in Auckland, New Zealand π³πΏ
1958: The "Phillips Curve,'' a scatterplot of inflation vs. unemployment over time shows a strong inverse relation, leading to important developments in macroeconomic theory
#TodayinHistory #dataviz #Onthisday #OTD π
πMar 4, 1897 Mary Eleanor Spear born in Jonesboro, Indiana, USA πΊπΈ
A data vis specialist at the Bureau of Labor Statistics, she pioneered the boxplot and wrote books on effective graphic techniques (done by hand!)
π bit.ly/4baeFSY
WOW!
05.03.2026 01:06 β π 2 π 1 π¬ 0 π 0
This is a great find!
1828-- Not long after Dupin published his first b/w choropleth (1826)
The use of color is subtle; uses what looks like a nice color ramp, but actually colored patterns. Great detail shown
I never heard of the cartographer -- F. von Doring
^0.5 --> ^0.57 makes a bigger difference than one would think.
But remember, you can't say much about what is "better" for #dataviz without specifying the TASK. A lot of the recommendations (following Cleveland/McGill) come from magnitude estimation: How big is X?
#rstats RIP, John Fox
@yihui.org just published this lovely tribute to John Fox and his work
yihui.org/en/2026/02/j...
YES! Of course the Atlantic gave Minard a lot more room.
But his master stroke was to do these comparatively over time
I rounded up a few Claude Skills for #RStats users.
Huge thanks to the creators who developed them. They share Skills for everything from tidyverse code to brand.yml files to learning while using AI.
Hope the list is useful, and please let me know what I missed! π§‘
rworks.dev/posts/claude...
Wright's generic path diagram showing A as a cause of X, D as a cause of Y and B, C as partial causes of X and Y. (reproduced from Wright, 1920, p. 329)
Photo of Sewall Wright in front of a blackboard with mathematical symbols
#TodayinHistory #dataviz #Onthisday #OTD π
πMar 3, 1988 Sewall Wright died in Madison, Wisconsin, USA πΊπΈ
1920: invention of the path diagram to show relations among a network of endogenous and exogenous variables forming a system of structural equations.
Established idea of diagram thinking
Very nice collection. Bertin would love these
03.03.2026 03:42 β π 1 π 1 π¬ 0 π 0But people on all sides were finally thinking (and muttering) about their loyalties
03.03.2026 01:51 β π 1 π 0 π¬ 0 π 0
Be extra careful with the Description: -- quote software names, beware of spelling, use proper DOI refs, ...
"Newbies" -- packages, not maintainers are put through a special room in CRAN-Hell πΏ
Code for the R_birthday_card: gist.github.com/friendly/ca2...
02.03.2026 03:04 β π 0 π 0 π¬ 0 π 0R birthday cake generated by Claude Ai Code: # Happy Birthday, R! # R 1.0.0 was first released on February 29, 2000 # Celebrating 26 years of statistical computing! out_file <- "r_birthday_cake.png" png(out_file, width = 800, height = 660, bg = "#FFF0F5") par(mar = c(0.3, 0.3, 0.3, 0.3), bg = "#FFF0F5") plot(0, 0, type = "n", xlim = c(0, 10), ylim = c(0, 10), axes = FALSE, xlab = "", ylab = "") rect(-1, -1, 11, 11, col = "#FFF0F5", border = NA) # ---- Helper: teardrop flame ---- draw_flame <- function(cx, base_y) { t <- seq(0, 2 * pi, length.out = 120) polygon(cx + 0.15 * sin(t), base_y + 0.32 * (1 - cos(t)) / 2, col = "#FFD93D", border = "#FFA500", lwd = 1) polygon(cx + 0.09 * sin(t), base_y + 0.02 + 0.20 * (1 - cos(t)) / 2, col = "#FF8C00", border = NA) polygon(cx + 0.04 * sin(t), base_y + 0.05 + 0.10 * (1 - cos(t)) / 2, col = "#FFFACD", border = NA) } # ---- Confetti scatter (top & bottom strips) ---- set.seed(2000) confetti_cols <- c("#FF6B6B", "#FFD93D", "#6BCB77", "#4D96FF", "#C77DFF", "#FF9F43") for (i in 1:90) { x <- runif(1, 0.1, 9.9) y <- ifelse(runif(1) > 0.5, runif(1, 0, 1.3), runif(1, 8.1, 9.9)) col <- sample(confetti_cols, 1) points(x, y, pch = sample(c(15, 17, 18), 1), cex = runif(1, 0.5, 1.6), col = adjustcolor(col, alpha.f = 0.75)) } # ---- Title text ---- text(5, 9.55, "Happy Birthday, R!", cex = 2.7, col = "#C0392B", font = 2, adj = 0.5) text(5, 9.07, "February 29, 2000 \u2014 26 Years of Statistical Computing", cex = 0.92, col = "#7F8C8D", font = 3, adj = 0.5) # ---- Cake plate (ellipse) ---- t_e <- seq(0, 2 * pi, length.out = 200) polygon(5 + 3.7 * cos(t_e), 2.12 + 0.28 * sin(t_e), col = "#C8B89A", border = "#A8987A", lwd = 2) # ---- Bottom cake layer ---- rect(1.65, 2.12, 8.35, 4.3, col = "#FADADD", border = "#E8A0A8", lwd = 2) # 3-D right-side face polygon(c(8.35, 8.65, 8.65, 8.35), c(2.12, 1.88, 4.05, 4.3), coβ¦
πHappy #Rstats birthday!
OK, Claude. I hear your pain.
"You can have a turn at creating an #Rstats birthday card. But you've got to do that in R code. Nothing fancy-- use base R graphics and no pipes, data.tables, an no extra packages loaded".
A birthday card generated by Google Nano Banana from the prompt: "Can you make a birthday card or an image of a birthday cake for R software? R 1.0.0 was first released on February 29, 2000 [It gets the birthday WRONG.]
#TodayinHistory #dataviz #OTD π
πHappy #Rstats birthday!
R 1.0.0 was first released on February 29, 2000.
Does that make it 26 or just 6.5 leap-years old?
www.r-consortium.org/blog/2023/02...
[Cake by Nano Banana, but it gets age WRONG.]
Interesting you say that.
From a #datavis perspective, I find these sort of nice to look at, but wonder if there is a better way of showing pop. density than with skiny spikes in 3D-ish. Nearly everything but the spikes fade into the background.
This #rstats #package #negligible examine negligible effect / #equivalent testing in #SEM model after #lavaan, a few of the functions include
1) #neg.semfit (CFI, RMSEA, SRMR)
2) #neg.normal
github.com/cribbie/negl...
3D drawing of a quincunx. It shows piles of little balls separated by vertical dividers and the shape of the distribution approximates a Gausian
Portrait of Francis Galton by Charles Wellington Furse
#TodayinHistory #dataviz #Onthisday #OTD π
π
Feb 27, 1874 Francis Galton demonstrated the quincunx at a meeting of the Royal Institution-- showing how normal distributions arise as sum of small random effects [Stigler:1986, p.276] --
Great example of data physicalization
The image, of course was AI generated
01.03.2026 02:17 β π 3 π 1 π¬ 0 π 0
An amusing musical side-note to this story: In 1968 a French rock-star arrived as a grad student at #Princeton in physics - JoΓ«l Sternheimer, stage name: Γvariste (after Galois), w/ his song,
"Connais-tu l'animal qui inventa le calcul intΓ©gral ?"
www.youtube.com/watch?v=0q7-...
Who d'ya think won?
If there's been a flare-up of #rstats pipe-wars, consider the war between Newton & Leibnitz over the invention of calculus
Leibnitz won in the end because his NOTATION proved to generalize better.
medium.com/@vplevris/ne...
Graph of the male / female birth ratio (Ratio) over 82 years from 1629 - 1710, with the points connected by lines. Also shown is the loess smooth curve, and a thick red line at the value Ratio = 1. The fact that all 82 points are above this line is equivalent in probability to getting 82 heads in 82 coin tosses.
Painted portrait of John Arbuthnot by the artist John Kneller
#TodayinHistory #dataviz #Onthisday #OTD π
πFeb 27, 1735 John Arbuthnot died in London, England π¬π§
1711: First test of statistical significance based on deviation between observed data and a null hypothesis (M/F birth ratio = 1)
#rstats: data(Arbuthnot, package = "HistData")
With some help from Claude Code, I have the app I've always wanted:
elicitcausal lets you design a causal graph with your theoretical priors & preregister it. Then after you complete a study, you can upload your graph and get estimates of causal learning.
Link: causal.wilddata.solutions
#rstats
B/W photo of John Bailey Peddle
Title page of "The Construction of Graphical Charts"
An alignment chart (nomogram) for determining the load supported by a helical spring. Four vertical scales are shown. The solution to a set of equations is determined graphically by drawing lines connecting the variables.
3D stenographic charts showing the relationship between temperature, surface velocity and heat generated
#TodayinHistory #dataviz #Onthisday #OTD π
πFeb 27, 1868 John Bailey Peddle born in Terre Haute, Indiana, USA πΊπΈ
1910: Published a textbook in English devoted exclusively to charts & statistical graphics,
"The Construction of Graphical Charts"
πhttps://archive.org/details/cu31924003646449
Image of an early lithographic printing press. A design is drawn onto a flat stone (or prepared metal plate, usually zinc or aluminum) and affixed by means of a chemical reaction.
Etched portrait of Aloys Senefelder
#TodayinHistory #dataviz #Onthisday #OTD π
πFeb 26, 1834 Aloys Senefelder died in Munich, Germany π©πͺ
1798: Invention of lithographic technique for printing of maps and diagrams (at the time, this was as significant as the invention of the Xerox machine)
Impressive collection, made even easier to use... βοΈ
27.02.2026 02:26 β π 4 π 0 π¬ 0 π 0
An important #rstats post here. (Perhaps a better title: Why tidymodels might not be so tidy)
I don't eschew this kind of discussion (|> vs %>%, ...) as R Flame Wars. In fact, it's important to continue to hone the language tools we use to express & implement our ideas/models/graphs.
This blog post: "Adding Color to the World: How Maps Got Toned" well worth reading. Thx @rsimmon.bsky.social for noticing this
27.02.2026 01:44 β π 5 π 0 π¬ 0 π 0