Leland Wilkinson’s work ‘The Grammar of Graphics’ (2000) heralded a new era for data visualization systems. The proposed Grammar identified components of data visualizations (visual channels, coordinates, stats, scales, geometric marks, etc), and advocated for systems that would let users declare these components to specify familiar or new graph types. To varying extents, popular modern systems like Tableau, vega lite, observable plot, altair, plotnine, seaborn , (more?), and ggplot2 are all shaped by the Wilkinson’s Grammar.
The ggplot2 library in R, created by Hadley Wickham (2010), is an especially notable implementation of the ideas elaborated by Wilkinson. The ‘gg’ in the library’s name acknowledges that Wilkinson’s vision inspired the project which has been maintained and further developed for nearly two decades, enjoying great popularity because of its elegance, flexibility, and ease of use.
Within ggplot2 itself, a large swath of common chart types can be easily produced. And with some effort - virtually any chart type could be specified. The ggplot2 extension system (formalized around 2015) allowed ggplot2 users to ‘wrap up’ some of this effort so that it could be accessed and reused in a way consistent with the ggplot2 system. As a consequence, the number of ggplot2 extensions packages has exploded into an ecosystem.
In an effort to provide a foothold into the ecosystem, meta-resources like the ggplot2 extension gallery and awesome ggplot2 have been created. Additionally, the ggplot2 extenders club has held virtual meetings since 2022, and boasts a lively discussion forum. The group exists for exchanging resources and experiences and to expose common extension patterns, pitfalls, and pathways.