The #Poaceae family is called “#Süssgräser” in German. They have been our source of #sugar and #carbohydrates for over 10’000 years, and basis of the #Neolithic Revolution: rice, maize, wheat, millet, barley… And later #sugarcane,, with 2025.8 Megatons of harvested biomass per year!

▶ See the "sweet grasses" in the Tree of life: https://ourednik.info/OuroborosTree/app/visualization/index_tree3D.html?taxon=4479

#OuroborosTree

#biosphere #taxonomy #food #nutrition #sustainability #dataviz #threejs #pixijs #d3

It's the first Tuesday of 2026 which means it's time to kick-off another year of #TidyTuesday with "Bring Your Own Data" week!

Here's 4 abstract timeline charts summarising my 2025 made with #ggplot2 (assembled with {patchwork})

Code: https://github.com/nrennie/tidytuesday/tree/main/2026/2026-01-06

#RStats #DataViz

If you set limits for a scale (e.g. x-axis) in ggplot, how would you like data outside of that range be handled? There is the oob parameter for that and a set of functions to use with it: https://scales.r-lib.org/reference/oob.html #rstats #ggplot #dataviz
Out of bounds handling — oob

This set of functions modify data values outside a given range. The oob_*() functions are designed to be passed as the oob argument of ggplot2 continuous and binned scales, with oob_discard being an exception. These functions affect out of bounds values in the following ways: oob_censor() replaces out of bounds values with NAs. This is the default oob argument for continuous scales. oob_censor_any() acts like oob_censor(), but also replaces infinite values with NAs. oob_squish() replaces out of bounds values with the nearest limit. This is the default oob argument for binned scales. oob_squish_any() acts like oob_squish(), but also replaces infinite values with the nearest limit. oob_squish_infinite() only replaces infinite values by the nearest limit. oob_keep() does not adjust out of bounds values. In position scales, behaves as zooming limits without data removal. oob_discard() removes out of bounds values from the input. Not suitable for ggplot2 scales.

#rstats #dataviz
Made myself a new Quarto website for my Books, Courses, R packages, ...
I'm still considering the page design, but found myself running down rabbit holes of <div>s and CSS

https:://friendly.github.io

I saw this chart in the wild a few days ago and it's been on my mind because the longer I look at it, the more confused I become by it. A #DataViz thread 🧵

I'm fairly sure it's AI generated for a few reasons:

- The gridlines are positioned at slightly different widths
- The colours are odd combinations of gradients and different colours and don't mean anything.
- The flags aren't *quite* correct e.g. Slovenian flag has a different symbol

It's week 1 of 2026, which means it's Bring Your Own Data Week!

Ideas:
⏪ A previous #TidyTuesday dataset (https://tidytues.day/2025)
🫵 Personal metadata (TV shows watched, music listened, #RStats written, etc)
❓ Whatever else you want to use!

Submit a dataset! https://github.com/rfordatascience/tidytuesday/blob/main/.github/CONTRIBUTING.md

#r4ds #tidyverse #DataViz

tidytuesday/data/2025/readme.md at main · rfordatascience/tidytuesday

Official repo for the #tidytuesday project. Contribute to rfordatascience/tidytuesday development by creating an account on GitHub.

GitHub
NYC Clean Heat Dataset (Historical)
Source: https://data.cityofnewyork.us/d/8isn-pgv3
#nyc #data #dataviz

All Statistics Globe courses are now open again: https://statisticsglobe.com/courses

Especially check out the Missing Data Imputation in R course, which is currently running and has just entered its second half: https://statisticsglobe.com/online-course-missing-data-imputation-r

#rstats #datascience #statistics #dataanalysis #dataviz