What we did with publication-quality tables in 2024
In our 2024 table efforts at Posit, we did quite a lot! It’s all too easy to forget the many little accomplishments that, when all summed up, pushed code-first table-display creation to new heights. This post will gather up the things we did for our Python and R display-table packages (gt and Great Tables), and provide links to resources you might have missed!
Feature-packed gt package releases
There were three releases of gt in 2024. A fairly substantial release was that of v0.11.0
, where we:
- introduced the feature of having gt tables as grid tables (so tables can be graphically arranged with ggplot2 tables)
- incorporated the rendering LaTeX formulas in HTML table outputs
- added four new formatting functions
- improved the styling capabilities of LaTeX table outputs
- included six new datasets
The Posit blog post entitled Everything new that’s in {gt} 0.11.0 was published on July 31, 2024.
Going back a bit further, toward the beginning of the year in January, we put out v0.10.1
of gt. That was also a fine release, further refining what we did in `v0.10.0` which had the following expanded capabilities:
- including nanoplots in your table (these are small and interactive plots that work well in a table context)
- the flexibility to add new rows and columns to a gt table, giving you some creative freedom in how you want to structure things
- units notation: a way to express measurement units in the places you need them
- dynamic formatting of values with `from_column()` (it lets you get formatting parameters from adjacent columns)
These features were written about in the All the new features in {gt} 0.10.0 blog post. That post is full of examples you can adapt for your own table creations!
We were quite fortunate in 2024 to have some really great contributors to the package. These key individuals were:
- Olivier Roy (@olivroy), who submitted dozens of PRs that improved many, many areas of the project
- Teun van den Brand (@teunbrand), the contributor that turned gt tables into grid graphics so that they could coexist within graphical outputs
- Ken Brevoort (@kbrevoort), who greatly improved the stylistic capabilities of LaTeX tables in gt
To these contributors, and many more besides, we extend our thanks!
There’s a lot more in store for gt in 2025. This will be in the form of new features, refinements to existing functionality, and improvements to all of our documentation.
The Great Tables ascendancy of 2024
We worked pretty hard throughout 2024 to make Great Tables (the Python version of gt) good and usable for authoring display tables. We kicked off this journey slightly before 2024 (in December 2023) and wrote about it in the Posit blog in the Introducing Great Tables for Python v0.1.0 post.
Throughout 2024, we had 20 (!) releases of Great Tables. As of the `v0.15.0` release, there are 84 methods/classes/functions and 16 datasets in the library. The difference in capabilities between early January and late December 2024 is vast, and we are now so confident that Great Tables is the best solution for making beautiful tables for publication in Python.
In between our development efforts, we wrote many posts to explain everything that was new. In the Great Blogposts section of our documentation website, we have 16 posts! One of them, The Design Philosophy of Great Tables, goes over how we generally think about tables, how the history of table generation informs the design of our software, and how tables can flourish in the form of computational tables.
As with gt, we have wonderful contributors to the Great Tables project. We especially want to thank Jerry Wu (@jrycw) for being not only a prolific contributor to Great Tables throughout 2024 but also for writing so much about the library. That collection of writing includes a fantastic blog post called Rendering images anywhere in Great Tables. Thank you, Jerry!
The 2024 Posit Table Contest
We have had several table contests in past years (2020, 2021, 2022), and while 2023 was inexplicably skipped, we came back with a vengeance with the 2024 Posit Table Contest!
The Winners of the 2024 Table Contest post, which rounds up all the winning entries in the different categories, has so many tables that truly inspire. It’s also a wondrous learning resource, with links to the code that produced these winning tables (and lots of writing around their creation). The contest encourages submissions with different table libraries (certainly not limited to gt and Great Tables), and there are categories for different disciplines (e.g., sports analytics, finance, pharma, etc.). We think there might be something interesting there for you, so do check out the post!
Podcast Appearances
We were guests on two excellent podcasts: Real Python and Talk Python to Me. It was a lot of fun to talk tables with these podcasts’ excellent hosts Christopher Bailey and Michael Kennedy.
- The Real Python Podcast (Ep 214): Build Captivating Display Tables in Python With Great Tables (RealPython, YouTube)
- Talk Python to Me (Ep 493): Great Tables (YouTube)
These were both really enjoyable conversations to have and we thank the hosts for having us on!
Talks and workshops
In 2024, we went to a few conferences and delivered presentations on our table packages. Here’s a listing with links to recordings, where available:
- PyCon – Talk – Making Beautiful, Publication Quality Tables in Python is Possible in 2024 (PyCon 2024, YouTube)
- SciPy – Talk – Great Tables for Everyone (SciPy 2024, YouTube)
- posit::conf(2024) – Talk – Adequate Tables? No, We Want Great Tables (YouTube)
- posit::conf(2024) – Workshop – Making Tables with gt and Great Tables (GitHub repo)
It’s good to get out there and explain why table-generation packages for R and Python are valuable. And we certainly enjoyed and gained a lot from the many discussions about tables at these conferences.
A new Python library for interactive tables: reactable
Python seemed to be missing a comprehensive, easy-to-use library for authoring interactive tables. Thankfully, this situation was remedied by the work Michael Chow put into reactable for Python. This is a Python port of the cherished R package reactable by Posit’s very own Greg Lin.
The documentation for reactable (in both R and Python languages) is incredible. Michael ensured that the documentation of the Python version lived up to the standard set by Greg. The Get Started guide explains how to do pretty much everything and it’s nicely sectioned into easily-digestable parts. The examples section will inspire readers with fully worked example tables that tastefully bundle together a plethora of features.
Farewell 2024!
We thoroughly enjoyed all that we’ve done to make tables better in 2024. We’ll keep pushing ahead in 2025 with this constant forge and, in doing so, advance the state of the art for publication tables.
To stay up-to-date on the latest table news, follow our new Bluesky account @gt-package.bsky.social! If you’re into Discord, join us there and experience a casual atmosphere with plenty of table talk to go around.