Fact-checked by Grok 2 weeks ago

ggplot2

ggplot2 is an open-source data visualization package for the R programming language, designed to create a wide variety of static, animated, and interactive visualizations using a layered grammar of graphics framework. Developed primarily by Hadley Wickham, it allows users to declaratively specify plots by mapping data variables to visual properties such as position, color, and size, building graphics through successive layers that include data, aesthetics, geoms (geometric objects), stats (statistical transformations), scales, and coordinates. First released on June 1, 2007, ggplot2 has evolved into a cornerstone of modern data analysis in R, with its current version 4.0.1 published on November 14, 2025. The package draws its theoretical foundation from Leland Wilkinson's The Grammar of Graphics (1999), which Wickham adapted into a practical implementation via his 2010 paper "A Layered Grammar of Graphics," emphasizing modularity and reusability in plot construction. Initially developed as an extension of earlier work on ggplot (version 0.4.2 in 2008), ggplot2 gained rapid adoption due to its intuitive syntax and ability to produce publication-quality with minimal code, contrasting with R's base plotting system. By 2016, it was integrated into the , a cohesive collection of R packages for workflows, further amplifying its influence. Over nearly two decades, ggplot2 has amassed significant impact, cited in thousands of academic papers and used by hundreds of thousands of practitioners to generate millions of plots annually, as evidenced by its high download rates on CRAN (several million monthly in recent years) and the enduring relevance of Wickham's foundational paper, which has garnered over 500 citations. Its extensibility through extensions like gganimate for animations and ggthemes for themes has fostered a vibrant , making it indispensable for , statistical reporting, and reproducible research in fields ranging from social sciences to bioinformatics.

History and Development

Origins and Initial Release

ggplot2 was created by Hadley Wickham in 2005 as part of his doctoral research at . Wickham developed the package to provide a more systematic and flexible approach to data visualization in , drawing inspiration from Leland Wilkinson's 1999 book The Grammar of Graphics, which proposed a declarative framework for constructing graphics. This adaptation translated the book's theoretical grammar into practical code, emphasizing a layered structure that separates , , and visual representations to facilitate . Wickham's primary motivations stemmed from the limitations of R's base graphics system, which relied on imperative commands that made complex plots difficult to construct, modify, and reuse. Base graphics often required users to specify low-level details sequentially, hindering rapid during data exploration, whereas ggplot2 aimed to promote modularity and reusability by allowing plots to be built declaratively through composable components. This design choice was intended to integrate seamlessly with R's data manipulation and modeling tools, enabling statisticians to focus on insights rather than graphical plumbing. The package's initial release to the Comprehensive Archive (CRAN) occurred in June 2007 with version 0.5, marking its entry into the broader statistical computing ecosystem. Early versions introduced key features such as the qplot() function, a quick-plot utility modeled after R's base plot() but incorporating grammar-based defaults for streamlined creation of scatterplots, histograms, and other common visualizations. This accessibility contributed to ggplot2's rapid uptake among R users in academic and research communities, where it quickly became a preferred tool for producing publication-quality graphics.

Major Version Updates

The development of ggplot2 has progressed through several major version updates, each introducing significant technical improvements to enhance performance, stability, and extensibility. Version 0.9.0, released on March 2, 2012, featured an extensive internal restructuring, including changes to scale construction, layers, and overall organization, aimed at improving performance and facilitating future extensions. Version 1.0.0, released in February 2014, marked a milestone in achieving greater stability for the package, with creator Hadley Wickham announcing a shift to to prioritize the development of extensions rather than core changes. This release incorporated new features and bug fixes while signaling ggplot2's maturity as a plotting . In 2015, 2.0.0 was released, introducing the ggproto object-oriented specifically designed for ggplot2, which replaced earlier approaches like proto and reference classes. This extension mechanism enabled users to create custom geoms and stats more easily, fostering a robust ecosystem of add-ons. Version 3.0.0, released on July 3, 2018, integrated tidy evaluation to support safer and more programmatic use of non-standard evaluation in data mappings, aligning ggplot2 with the 's programming paradigms. This update also added support for sf objects via geom_sf() and coord_sf(), along with new statistical functions like stat_qq_line(). The most recent major update, version 4.0.0, was released on September 11, 2025, rewriting much of the package's internals from the S3 object system to the newer S7 system for greater consistency, robustness, and developer tools. It included native enhancements for multiple graphics devices, bug fixes for rendering, and improvements to themes and scales, such as the theme(geom) function and palette arguments. Ongoing maintenance of ggplot2 is handled by the tidyverse team, ensuring compatibility with evolving R standards and addressing user-reported issues, contributing to its widespread adoption with millions of downloads and use by hundreds of thousands of users as of 2025.

Theoretical Foundations

The Grammar of Graphics

The Grammar of Graphics is a theoretical framework developed by statistician Leland Wilkinson in his 1999 book of the same name, proposing a declarative language for composing statistical visualizations from data, statistical transformations, and visual encodings. This approach treats graphics as a coherent system analogous to natural language grammar, where plots are constructed by specifying abstract components rather than procedural instructions, enabling systematic description and generation of diverse chart types. At its core, the framework organizes visualizations into key elements: the input data as the foundational ; transformations that process data through statistical operations like aggregation or ; coordinates that define scales and mappings to positional attributes; and rendering via geometric primitives that produce the final visual output. These elements form a layered structure, where data flows sequentially through transformations to coordinates and then to perceivable , ensuring that each step builds upon the previous without entanglement. The grammar emphasizes several foundational principles, including , where data processing is isolated from visual styling to enhance clarity and reusability; modularity, allowing components like scales or transformations to be independently combined and reused across plots; and expressiveness, which permits an infinite variety of visualizations from a finite set of grammatical rules, fostering innovation in graphical design. Unlike imperative plotting systems that require step-by-step commands to draw elements—such as explicitly positioning points or lines—the declarative nature of the grammar focuses on describing what the visualization should represent, leaving the how of rendering to the underlying system. Wilkinson's work has had broad influence beyond its original statistical context, inspiring declarative visualization tools in other languages and environments, such as the JavaScript-based Vega-Lite framework. This theoretical foundation is adapted in packages like for , as explored in subsequent sections on its principles.

Key Principles in ggplot2

ggplot2 implements the Grammar of Graphics through a declarative syntax that allows users to build plots by specifying aesthetic mappings from data and incrementally adding layers, with evaluation occurring lazily only upon rendering to promote efficiency and flexibility in construction. This philosophy shifts focus from imperative drawing commands to descriptive specifications of visual elements, enabling reusable and composable plot components. Central to ggplot2's design are its default aesthetics, which prioritize clarity and publication readiness with choices like a light gray background, fonts for labels, and perceptually uniform color scales that avoid common pitfalls in visual encoding. These defaults reduce the need for extensive customization in initial explorations while maintaining high standards for interpretability and in outputs. and grouping are core principles that extend ggplot2's capabilities for comparative , providing native support to partition datasets into subplots using functions such as facet_wrap() for free-form arrangements and facet_grid() for structured grids based on categorical variables. This mechanism allows seamless exploration of interactions and patterns across data subsets without manual subplot management. Reproducibility underpins ggplot2's workflow, ensuring consistent plot outputs across R sessions through deterministic rendering processes and explicit seeding for random components, such as jittering positions to prevent overplotting while maintaining identical results when a seed is provided. This aligns with broader reproducible research practices in statistical computing. ggplot2's integration with tidy data principles assumes inputs as long-format data frames where variables occupy columns and observations fill rows, facilitating smooth interoperability with the tidyverse suite for data wrangling and analysis prior to visualization. This design choice streamlines workflows by enforcing a standardized data structure that enhances both efficiency and consistency in exploratory data science.

Core Components

Layers and Aesthetics

In ggplot2, plots are constructed through an additive layering system, where each layer serves as a block that combines , aesthetic mappings, a geometric object (geom), and a statistical transformation (stat) to render specific visual elements. Layers are appended to a base plot object created by the ggplot() using the + , allowing users to build complex visualizations incrementally by stacking elements such as a primary display layer followed by overlaid summaries or annotations. This structure promotes a declarative approach, enabling the where each layer focuses on a distinct aspect of the graphic, such as raw representation, statistical overlays, or contextual like labels and reference lines. Aesthetic mappings, defined using the aes() function, form the core mechanism for linking data variables to visual properties, or aesthetics, which determine how information is encoded in the plot. Common aesthetics include position (e.g., x and y coordinates), color, size, shape, and fill, where data columns are mapped to these properties to convey variables visually; for instance, a continuous variable might control point size along a gradient scale, while a discrete factor could dictate color categories. These mappings support both continuous and discrete scales, automatically transforming raw values into perceptual encodings that facilitate interpretation, with the system handling the conversion through appropriate scale functions. Aesthetics specified at the global level in the initial ggplot() call are inherited by all subsequent layers, providing a default mapping that cascades throughout the plot unless explicitly overridden within a specific layer. This inheritance mechanism ensures consistency across layers while allowing flexibility; for example, a global x-y mapping can apply to a base scatterplot layer and automatically extend to an overlaid trend line, but a layer can redefine or add mappings (e.g., introducing color based on a new variable) to tailor its appearance. Similarly, data specification operates independently per layer, where each can reference the global , a , or an entirely different data frame, enabling compositions like a primary layer using full observations alongside an layer drawing from summarized statistics. The compositional nature of layers allows for sophisticated plot assembly, such as starting with a foundational layer for visualization and augmenting it with secondary layers for enhancements, all unified under shared or inherited to maintain coherence. This layered paradigm, rooted in the grammar of graphics, underscores ggplot2's emphasis on , where users can iteratively refine visuals by adding, modifying, or reordering layers without disrupting the overall structure.

Geoms, Stats, and Scales

Geoms in ggplot2 define the geometric shapes used to represent data visually within a plot layer, specifying how observations are rendered on the graphic. Each geom handles a of , such as position, color, or size, to create distinct visual elements. For instance, geom_point() produces scatterplots by plotting individual points to display relationships between continuous variables, while geom_bar() constructs bar charts to represent categorical data counts or values, and geom_line() draws connected lines to illustrate trends over ordered data. These geoms form the core visual vocabulary of ggplot2, enabling users to select the appropriate based on the data's and the intended message. Statistical transformations, or stats, preprocess data before it reaches the geom, computing summaries or adjustments to facilitate accurate rendering. Stats operate on the data within a layer, generating new variables that the geom then visualizes; for example, stat_summary() calculates aggregates like means or medians across groups, and stat_bin() divides continuous data into discrete bins for histograms. A common application is in geom_bar(), which by default uses stat="count" to tally observations per category without requiring explicit data preparation. Similarly, stat_smooth() fits smoothed curves to data points, employing methods such as for on smaller datasets or generalized additive models for larger ones, thereby highlighting underlying patterns amid noise. These transformations ensure that geoms receive optimized inputs, enhancing the interpretability of complex datasets. Scales map the transformed data from stats to the visual properties of geoms, controlling how values in the data domain translate to ranges in the plot, such as axis positions or color gradients. scales like scale_x_continuous() handle linear or transformed mappings for numeric axes, supporting options such as logarithmic (scale_x_log10()) or transformations to accommodate varied data distributions. For non-positional , scale_color_viridis_c() applies perceptually uniform continuous color gradients that are color-blind friendly and suitable for both light and dark backgrounds, while scales like scale_color_brewer() use predefined palettes for categorical distinctions. Scales thus refine the output of geoms and stats, ensuring proportional and aesthetically coherent representations. The interplay among geoms, stats, and scales forms a where stats generate derived for geoms to depict, and scales then adjust those depictions for clarity and emphasis. For example, in a smoothing layer, stat_smooth() computes fitted values and confidence intervals using , which geom_smooth() renders as a curved line with ribbons, and scales like scale_x_continuous() the along transformed axes if needed. This modular allows flexible ; binning via stat_bin() feeds count to geom_bar(), with color scales enhancing group differentiation. Such dependencies promote reusable and composable , as adjustments in one component propagate logically through the others. ggplot2's extensibility enables users to create custom geoms, stats, and scales by inheriting from base classes via the ggproto system, which defines required aesthetics, computation logic, and drawing behaviors without altering the core package. This object-oriented approach, built on the proto package, supports the of domain-specific extensions while maintaining compatibility with existing layers. For instance, new stats can override computation methods to implement specialized summaries, and custom scales can introduce novel mapping functions, fostering a rich of contributed tools.

Practical Usage

Basic Syntax and Functions

The basic syntax of ggplot2 revolves around the ggplot() function, which initializes a plot object by specifying the dataset and aesthetic mappings via aes(). This creates an empty plot frame that serves as the foundation for layering additional components. For instance, a simple scatterplot can be constructed as ggplot(data = mtcars, aes(x = mpg, y = wt)) + geom_point(), where data provides the data frame and aes() maps variables to visual properties like x and y positions. Plots are built incrementally by adding layers using the + operator, which appends geometric objects (geom_*), statistical transformations (stat_*), or other elements to the initial ggplot object. The conceptual flow begins with initialization via ggplot(), followed by aesthetic mapping in aes(), then addition of geoms or stats (e.g., geom_point() for points or stat_smooth() for fitted lines), and concludes with implicit printing of the object to render the visualization. This declarative approach allows for modular construction, where each layer can inherit or override mappings from the base. Multi-layer plots, such as combining points and a regression line with ggplot(mpg, aes(cty, hwy)) + geom_point() + geom_smooth(method = "lm"), enable complex compositions without nested function calls. An alternative quick-plot function, qplot(), offers a more concise, base R-like syntax for simple visualizations, such as qplot(mpg, wt, data = mtcars), which defaults to a scatterplot. However, qplot() has been deprecated since version 3.4.0 to promote the more flexible ggplot() for building intricate graphics. ggplot2 requires in a tidy format, typically a data frame where each row represents one observation and each column one variable, facilitating straightforward mapping to . Preprocessing can leverage the pipe %>% from the package (imported via the ), allowing chained operations like mtcars %>% filter(cyl == 6) %>% ggplot(aes(mpg, wt)) + geom_point() to subset before plotting. This integration streamlines workflows by passing transformed directly into ggplot calls. Common patterns include single-layer plots for basic displays, like ggplot(mtcars, aes(mpg)) + geom_histogram(), versus multi-layer ones for overlaid elements, as in adding or facets. Missing values are handled via the na.rm argument in most geoms and stats, which defaults to FALSE (removing NAs with a warning) but can be set to TRUE for silent removal, ensuring robust rendering without data gaps interrupting computations. By default, ggplot objects print automatically to the active graphics device upon evaluation, displaying the plot inline in interactive environments like . For persistent output, the ggsave() function saves the last plotted object or a specified ggplot to file formats such as , PDF, or , with options for dimensions and resolution, e.g., ggsave("plot.png", width = 7, height = 5). This enables easy export for reports or publications.

Customization and Theming

Customization in ggplot2 extends beyond initial data mappings to refine the visual presentation of plots, allowing users to adjust non-data elements such as layouts, annotations, colors, fonts, and overall themes for enhanced clarity and aesthetics. Theming, in particular, provides a systematic way to control the appearance of plot components like backgrounds, grids, axes, and legends, ensuring consistency across multiple visualizations. These features build on the basic syntax by enabling fine-tuned modifications that improve readability and communicative impact without altering the underlying data representation. The theme() function serves as the primary tool for customizing plot elements, targeting aspects such as axis labels via axis.title = element_text(size = 14), legends through legend.position = "bottom", and backgrounds with plot.background = element_rect(fill = "white"). Predefined complete themes offer ready-to-use styles; for instance, theme_minimal() removes background annotations and gridlines for a clean look, while theme_classic() employs x and y axis lines without gridlines to evoke traditional statistical graphics. Other options include theme_bw() for a high-contrast black-and-white scheme suitable for presentations, theme_void() for entirely blank backgrounds, and theme_dark() for inverted color schemes emphasizing data lines. These themes can be applied directly with + theme_minimal() and further modified using theme() to override specific elements, such as setting panel.grid.major = element_blank() to eliminate major grid lines. Annotations add supplementary information to plots, with annotate() enabling the placement of static text, arrows, or shapes independent of the data frame, as in annotate("text", x = 1, y = 10, label = "Note") for fixed labels. For data-driven text, geom_text() maps labels to variables, allowing positioning via like aes(x, y, label = variable), while guides() controls legend appearance, such as hiding keys with guide = "none". These tools facilitate the inclusion of explanatory notes or highlights without disrupting the core plot structure. Layout adjustments modify the spatial arrangement and orientation of plots; coord_flip() swaps x and y axes to create horizontal displays from vertical ones, useful for long categorical labels, as in + coord_flip() applied to a bar plot. Axis limits are set with xlim(c(0, 10)) or ylim(c(0, 100)) to focus on relevant ranges, and faceting uses formulas like facet_wrap(~variable) to split plots by categories into subplots. Color customization leverages scale_* functions, such as scale_color_brewer(palette = "Set1") for discrete qualitative palettes from the ColorBrewer library, which provides perceptually balanced schemes like sequential, diverging, and qualitative sets designed for up to 12 colors. Fonts are tailored using element_text() within themes, for example, axis.text = element_text(face = "bold", size = 10) to adjust typography for titles, labels, or legends. Accessibility features in ggplot2 include color-blind-friendly scales, with the scale_color_viridis_d() function providing discrete perceptually uniform palettes that are safe for common forms of deficiency, such as deuteranomaly, and print-friendly in . High-contrast themes like theme_bw() enhance visibility by minimizing low-contrast elements, and options for larger fonts or thicker lines via element_text(size = 12) and element_line(size = 1) support users with visual impairments.

Comparisons and Alternatives

Versus Base R Graphics

Base R graphics, the built-in plotting system of the language, employs an imperative approach where functions such as plot() and hist() directly draw elements onto a graphics device in a sequential manner. This "pen-on-paper" model allows for immediate visualization but often requires repetitive code for customizations, as each modification builds upon the existing plot without a modifiable . Originating from the S language developed at Bell Laboratories in the 1970s, base R graphics prioritize simplicity and speed for basic exploratory analysis but lack modularity for handling complex visualizations. In contrast, ggplot2 adopts a declarative layered of , enabling users to construct plots by composing independent components like , , geoms, and scales, which fosters a consistent syntax for creating intricate visualizations. This approach excels in handling multiple series and —dividing plots into subplots based on variables—reducing the need for loops or manual adjustments common in base . Additionally, ggplot2 provides superior defaults for publication-quality output, including polished themes, legends, and color scales that enhance readability without extensive tweaking. Despite these strengths, ggplot2 incurs trade-offs in performance and usability compared to base . Rendering plots in ggplot2 can be slower, particularly for large datasets or interactive use, as the layered system processes data transformations and aesthetics before drawing. Recent updates to ggplot2, including version 3.5.2 released in September 2025, have included performance enhancements that improve rendering speed and consistency. It also presents a steeper initial due to its verbose grammar, contrasting base R's straightforward functions that allow quick sketches for simple tasks. Interoperability between ggplot2 and base is facilitated through the underlying graphics system, on which ggplot2 is built, allowing plots from both to be combined in the same device via viewport management. Users may mix them strategically, such as employing base for rapid exploratory plots and embedding ggplot2 elements for refined components, though this requires careful handling to avoid conflicts in drawing order. This design reflects ggplot2's development in the as a more modular evolution from base 's 1970s S-language foundations, prioritizing extensibility over raw immediacy.

Versus Other Visualization Packages

Lattice provides a high-level interface for trellis graphics, emphasizing conditioning and multivariate displays through multi-panel plots, which makes it particularly effective for exploring relationships in large datasets via automatic splitting and grouping. In contrast, ggplot2 offers greater flexibility through its layered approach, allowing incremental additions of geoms, stats, and scales, which enables more customized and iterative exploratory analysis but at the cost of reduced intuitiveness for complex multivariate setups compared to lattice's all-at-once parameter specification. Lattice is also generally faster for certain tasks, making it preferable for performance-critical applications involving substantial data volumes. While ggplot2 excels in producing publication-ready static visualizations that integrate seamlessly with the ecosystem for data manipulation, it lacks native , relying on extensions for dynamic features. Packages like address this by converting ggplot2 outputs into interactive HTML-based plots with zooming, hovering, and capabilities, ideal for web applications and exploratory dashboards, though they introduce overhead in setup and may alter the aesthetic consistency of ggplot2's defaults. Similarly, ggvis, inspired by ggplot2's , aimed to provide reactive, browser-rendered for Shiny apps but has seen limited maintenance and adoption in favor of plotly's broader compatibility, remaining dormant since 2024. Cross-language alternatives highlight ggplot2's declarative paradigm rooted in the grammar of graphics, which separates data, , and geometric objects for reusable specifications. In , matplotlib employs an imperative style, requiring sequential commands and explicit data reshaping (e.g., for wide-format tables), which contrasts with ggplot2's tidy-data optimization and can feel more verbose for layered plots. Seaborn builds on with higher-level statistical visualizations but retains much of its procedural nature, lacking ggplot2's full grammar-based modularity. , however, mirrors ggplot2 closely as a declarative tool using Vega-Lite for web-ready charts, emphasizing encodings over layers, though it forgoes ggplot2's deep R-specific integrations like direct piping from . Regarding performance with specialized packages, ggplot2 can lag behind base graphics when handling datasets exceeding one million points, as its layered rendering introduces computational overhead unsuitable for rapid iteration on massive scales, though recent enhancements have improved efficiency for structured exploratory workflows. Adoption metrics underscore ggplot2's dominance, with over 2 million monthly downloads on CRAN as of 2025, reflecting its widespread preference in the community, while lattice's usage has declined relatively, evidenced by its total downloads of around 10.7 million since inception compared to ggplot2's 172 million as of November 2025.

Impact and Adoption

Influence on the R Ecosystem

ggplot2 has served as a cornerstone of the ecosystem since its formal inclusion in 2016, fundamentally shaping data science workflows in by integrating seamlessly with packages like and tidyr for data preparation and manipulation. This cohesive framework promotes a consistent of tidy data, where ggplot2's declarative approach to builds directly on cleaned and reshaped datasets, enabling users to transition fluidly from data import and transformation to graphical output. As part of the tidyverse's core packages, ggplot2 has driven the adoption of modular, pipe-friendly coding patterns that streamline exploratory analysis and reproducible reporting across the community. The package has standardized data visualization practices in R by popularizing the grammar of graphics paradigm, encouraging a layered, compositional thinking that decomposes plots into , , geoms, and scales rather than imperative commands. This shift has influenced R users to adopt a more systematic and extensible approach to , reducing the for complex visualizations and fostering a shared vocabulary for discussing construction. Additionally, ggplot2's design principles inspired enhancements in RStudio's , such as the built-in viewer and interactive preview tools that facilitate rapid iteration on grammar-based code. In education, ggplot2 dominates introductory materials and curricula, prominently featured in textbooks like R for Data Science (2016), which dedicates significant coverage to its syntax for teaching alongside . Surveys and usage data indicate that ggplot2 is the primary tool for a majority of practitioners, with millions of downloads annually underscoring its ubiquity in academic and professional training. The release of ggplot2 version 4.0.0 in September 2025 introduced internal upgrades using the S7 object system, improving performance and compatibility with spatial data packages like , which enables more robust handling of vector geometries in plots without custom transformations; a minor update to version 4.0.1 followed on November 14, 2025. ggplot2's influence extends to R's broader growth in , evidenced by its role in over 87,000 citations for Wickham's book ggplot2: Elegant Graphics for Data Analysis and widespread mentions in academic literature by 2025, contributing to R's status as a leading language for statistical computing and graphics.

Usage in Industry and Academia

In industry, ggplot2 has been widely adopted for creating high-quality data visualizations in media, government, and technology sectors. The New York Times has utilized R, including ggplot2, for producing interactive and static graphics in its data journalism, such as election maps and economic trend analyses, enabling efficient prototyping and publication-ready outputs. Similarly, U.S. government agencies like the Centers for Disease Control and Prevention (CDC) employ ggplot2 in R-based dashboards and reports for public health data, including visualizations of cancer mortality rates and COVID-19 trends to communicate epidemiological insights clearly to policymakers and the public. Tech companies, exemplified by Google's Data Analytics Professional Certificate program, integrate ggplot2 into training for data professionals, supporting dashboard creation and exploratory analysis in fields like marketing and operations. In academia, ggplot2 serves as a cornerstone for teaching data visualization and in university curricula worldwide. It is a standard tool in statistics and courses at institutions such as , , and the , where students learn to construct layered plots for and hypothesis testing. Scientific journals, including Nature, frequently feature ggplot2-generated figures for reproducible research, such as in studies on ecological patterns and medical outcomes, due to its alignment with principles of clarity and modularity. Notable case studies illustrate ggplot2's versatility across disciplines. In epidemiology, it has been instrumental for plotting COVID-19 case trajectories and transmission dynamics, allowing researchers to overlay multiple variables like infection rates and vaccination coverage for rapid insight generation. In finance, ggplot2 facilitates time-series visualizations of stock indices and economic indicators, such as U.S. GDP fluctuations, enabling trend detection and risk assessment through faceted panels and smooth lines. For machine learning, it is commonly used to generate receiver operating characteristic (ROC) curves, comparing model performance across thresholds in binary classification tasks like disease prediction. ggplot2 addresses key challenges in data communication by promoting clean defaults that minimize "chart junk"—non-essential graphical elements that obscure insights—as inspired by Edward Tufte's principles, resulting in higher data-ink ratios for more effective presentations. Its global reach is evident in over 171 million cumulative downloads from CRAN as of 2025, reflecting adoption in diverse R communities, including adaptations for multilingual labels in non-English speaking regions like and .

Official Extensions

The official extensions to ggplot2 are a set of -affiliated packages that build directly on its grammar of graphics to provide specialized visualization features, ensuring seamless integration and compatibility with core workflows. These packages are tracked and promoted through the 's extension registry, allowing users to enhance plots for themes, animations, spatial data, and multi-panel compositions without altering ggplot2's foundational structure. The ggthemes package offers a collection of prebuilt themes and scales that emulate established visual styles, such as those from Edward Tufte's minimalist designs, Stephen Few's information-dense charts, and publications like , , and . It includes functions like theme_tufte() for sparse, data-focused aesthetics and scale_color_economist() for branded color palettes, enabling quick application of professional theming to ggplot2 objects via + theme_*(). This enhances visual consistency across reports or presentations while preserving ggplot2's declarative syntax. gganimate extends ggplot2 to support animated graphics by introducing new grammar elements for transitions, easing, and frame specification, making it ideal for visualizing temporal changes or simulations. Users can add animations to static plots using functions like transition_state() to cycle through categorical states or transition_time() for continuous , producing outputs as GIFs, videos, or interactive via integration with packages like gifski or av. For instance, a of economic indicators can evolve frame-by-frame to highlight trends, with controls for duration and . ggspatial provides tools for incorporating spatial data into ggplot2, particularly through compatibility with the sf package for vector geometries and raster handling. It adds geoms and annotations such as geom_sf() for plotting and annotation_map_tile() for overlaying online basemaps from sources like or , facilitating the creation of choropleth maps or point distributions on geographic projections. This extension supports coordinate reference system transformations natively within ggplot2 layers, streamlining workflows in the . Patchwork simplifies the assembly of multiple ggplot2 objects into composite figures using intuitive operators like + for vertical stacking, | for horizontal arrangement, and () for nesting, along with layout guides for grid-based positioning. It handles alignment of axes, legends, and annotations automatically, and supports adding titles or tags via plot_annotation(). For example, separate scatterplots and charts can be combined into a publication-ready with p1 + p2 | p3, promoting modular plot design. These extensions are maintained by contributors within the tidyverse core team, including developers like Thomas Lin Pedersen for gganimate and , ensuring alignment with ggplot2's release cycles—such as compatibility updates for version 4.0.0 released in September 2025, which introduced S7 object system enhancements. This coordinated development guarantees and leverages ggplot2's evolving internals for improved performance in specialized applications.

Community Contributions

The ggplot2 community has developed numerous unofficial extensions that expand its functionality into specialized domains, leveraging the package's extensible architecture to create custom geoms, stats, and layouts. These contributions, often hosted on and available via CRAN or , address gaps in the core package by providing tools for advanced visualizations not prioritized in official development. One prominent example is the ggforce package, which accelerates ggplot2 by adding high-performance geoms and stats for complex plots. It includes specialized geoms for force-directed network visualizations, enabling the depiction of structures with physics-based s, and supports Sankey diagrams to illustrate flows between categories, such as or process stages. Additionally, ggforce extends layout algorithms through features like facet_zoom, which allows interactive zooming into specific regions of faceted plots without altering the underlying data. Developed by Thomas Lin Pedersen, ggforce integrates seamlessly with ggplot2's extension system introduced in version 2.0.0, making it a go-to for users needing performant enhancements for large datasets. Another key contribution is esquisse, an interactive add-in that simplifies ggplot2 usage through a drag-and-drop (). Users can explore datasets by selecting variables to build bar plots, scatter plots, curves, and other common chart types, with the tool generating corresponding ggplot2 code for . Esquisse integrates with Shiny applications, allowing of its in web-based dashboards for collaborative data exploration. Created by the dreamRS team, this package democratizes ggplot2 for non-programmers while aiding experts in . Community efforts also extend to niche fields via custom repositories, such as ggbio for visualizations. This package specializes ggplot2's grammar for biological , offering geoms for ideograms, models, tracks, and annotations to facilitate genome-wide overviews and detailed regional views. For instance, it supports plotting high-throughput sequencing alongside genomes, addressing common questions in bioinformatics like variant distribution. Developed by Tengfei Yin and colleagues, ggbio builds on ggplot2 to handle structures, promoting its adoption in genomic research. Despite these innovations, community extensions face challenges, particularly compatibility with ggplot2 core updates. Major releases, such as version 4.0.0 in 2025, have introduced breaking changes to internal structures like ggproto, requiring extension maintainers to revise code to maintain functionality and avoid errors in dependent packages. This issue is exacerbated in ecosystems like , where ggplot2 updates can disrupt specialized tools until patches are applied. Community support mitigates these hurdles through active forums, including Stack Overflow's ggplot2 tag with thousands of resolved threads on and problems, and the Posit Community forum for discussions on RStudio-specific workflows. The ecosystem's growth underscores the package's influence, with over 150 extensions registered in the official ggplot2 extensions gallery by late 2025, fostering innovation in areas like bioinformatics, interactive apps, and domain-specific plotting. This proliferation, tracked by community-curated resources, highlights how user contributions continue to evolve ggplot2's capabilities beyond official add-ons.

References

  1. [1]
    ggplot2 - Tidyverse
    ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics. You provide the data, tell ggplot2 how to map variables to ...Introduction to ggplot2 · Package index · Create a new ggplot · Extending ggplot2
  2. [2]
    Introduction to ggplot2
    ggplot2 is an R package for producing visualizations of data. Unlike many graphics packages, ggplot2 uses a conceptual framework based on the grammar of ...Data · Layers · Scales · Facets
  3. [3]
    ggplot2 R Package Stats, Author, Search and Tutorials - RPKG.net
    https://CRAN.R-project.org/package=ggplot2 . First Published: 2007-06-01 ... R package version 3.5.2, https://cran.r-project.org/web/packages/ggplot2 ...
  4. [4]
    Package ggplot2 - CRAN
    Sep 11, 2025 · ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics ; Published: 2025-09-11 ; DOI: 10.32614/CRAN.package.ggplot2 ; Author: ...
  5. [5]
    A Layered Grammar of Graphics - Taylor & Francis Online
    Jan 1, 2012 · A Layered Grammar of Graphics. Hadley Wickham Hadley Wickham is Assistant Professor of Statistics, Rice University, Houston, TX 77030 .
  6. [6]
    A layered grammar of graphics - Hadley Wickham
    A layered grammar of graphics ... A grammar of graphics is a tool that enables us to concisely describe the components of a graphic. Such a grammar allows us to ...
  7. [7]
    ‪Hadley Wickham‬ - ‪Google Scholar‬
    A layered grammar of graphics. H Wickham. Journal of Computational and Graphical Statistics 19 (1), 3-28, 2010. 552, 2010 ; R Packages. H Wickham. O'Reilly Media ...
  8. [8]
    [PDF] Practical tools for exploring data and models - Hadley Wickham
    Wickham. Meifly: Models explored interactively. Technical Report 4, Department of Statistics, Iowa State University, 2007d. URL http://www.stat.iastate.edu/.
  9. [9]
    [PDF] elegant graphics for data analysis - ggplot2 - McMaster University
    Feb 24, 2009 · ggplot2 is an R package for producing statistical, or data, graphics, but it is unlike most other graphics packages because it has a deep ...Missing: origins | Show results with:origins
  10. [10]
    Index of /src/contrib/Archive/ggplot2
    - **Earliest Release of ggplot2 on CRAN:**
  11. [11]
    [R] [R-pkgs] ggplot2 0.9.0
    Mar 2, 2012 · ... ggplot2, or track development at http://github.com/hadley/ggplot2 ggplot2 0.9.0 has an extensive set of changes, summarised below and ...
  12. [12]
    ggplot2 updates
    As you might have noticed, ggplot2 recently turned 1.0.0. This release incorporated a handful of new features and bug fixes, but most importantly reflects that ...
  13. [13]
    ggplot2 updates - Posit
    Jan 9, 2015 · This release incorporated a handful of new features and bug fixes, but most importantly reflects that ggplot2 is now a mature plotting system ...
  14. [14]
    ggplot 2.0.0 - Posit
    Dec 21, 2015 · On the scale of ggplot2 releases, this one is huge with over one hundred fixes and improvements. This might break some of your existing code ( ...Missing: history | Show results with:history<|control11|><|separator|>
  15. [15]
    Extending ggplot2 - CRAN
    All ggplot2 objects are built using the ggproto system of object oriented programming. This OO system is used only in one place: ggplot2. This is mostly ...
  16. [16]
    ggplot2 3.0.0 - Tidyverse
    Jul 5, 2018 · Most importantly ggplot2 now supports tidy evaluation, which makes it easier to programmatically build plots with ggplot2 in the same way ...Tidy Evaluation · New Features · Scales And Guides
  17. [17]
    Changelog - ggplot2 - Tidyverse
    It supports all simple features, automatically aligns CRS across layers, sets up the correct aspect ratio, and draws a graticule. New features. ggplot2 now ...
  18. [18]
    ggplot2 4.0.0
    Sep 11, 2025 · In ggplot2, we use major version increments to indicate that something at the core of the package has changed. In this release, we have replaced ...Missing: history | Show results with:history
  19. [19]
  20. [20]
    [PDF] Vega-Lite: A Grammar of Interactive Graphics
    In this paper we extend Vega-Lite to enable concise, high-level specification of interactive data visualizations. To support expressive interaction methods ...
  21. [21]
    ggplot2: Elegant Graphics for Data Analysis (3e)
    ggplot2: Elegant Graphics for Data Analysis (3e) was written by Hadley Wickham, Danielle Navarro, and Thomas Lin Pedersen. Edit this page · Report an issue.19 Internals of ggplot2 · 20 Extending ggplot2 · 18 Programming with ggplot2
  22. [22]
    Jitter points to avoid overplotting — position_jitter - ggplot2
    A random seed to make the jitter reproducible. Useful if you need to apply the same jitter twice, e.g., for a point and a corresponding label. The random seed ...
  23. [23]
    Create a new layer - ggplot2
    A layer is a combination of data, stat and geom with a potential position adjustment. Usually layers are created using geom_* or stat_* calls but it can also ...
  24. [24]
    13 Build a plot layer by layer - GGPlot2 Book
    In this chapter, you'll dive into the details of a layer, and how you can control all five components: data, the aesthetic mappings, the geom, stat, and ...Missing: explanation | Show results with:explanation
  25. [25]
    Layers – ggplot2: Elegant Graphics for Data Analysis (3e)
    The layered structure of ggplot2 encourages you to design and construct graphics in a structured manner.Missing: explanation | Show results with:explanation
  26. [26]
    Construct aesthetic mappings — aes - ggplot2
    Aesthetic mappings describe how variables in the data are mapped to visual properties (aesthetics) of geoms. Aesthetic mappings can be set in ggplot() and in ...
  27. [27]
    Create a new ggplot - ggplot2
    It can be used to declare the input data frame for a graphic and to specify the set of plot aesthetics intended to be common throughout all subsequent layers ...
  28. [28]
    Points — geom_point - ggplot2
    The point geom is used to create scatterplots. The scatterplot is most useful for displaying the relationship between two continuous variables.
  29. [29]
    Bar charts — geom_bar - ggplot2
    na.rm. If FALSE , the default, missing values are removed with a warning. If TRUE , missing values are silently removed. show.legend. logical. Should this ...Layer statistical transformations · Layer position adjustments · Position_dodgeMissing: handling | Show results with:handling
  30. [30]
    3 Individual geoms – ggplot2: Elegant Graphics for Data Analysis (3e)
    These geoms are the fundamental building blocks of ggplot2. They are useful in their own right, but are also used to construct more complex geoms.
  31. [31]
    5 Statistical summaries - GGPlot2 Book
    There are a number of geoms that can be used to display distributions, depending on the dimensionality of the distribution, whether it is continuous or discrete ...
  32. [32]
    Smoothed conditional means — geom_smooth - ggplot2
    Aids the eye in seeing patterns in the presence of overplotting. geom_smooth() and stat_smooth() are effectively aliases: they both use the same arguments.Usage · Arguments · Orientation · Computed variables
  33. [33]
    10 Position scales and axes - GGPlot2 Book
    Position scales control visual entity locations in a plot, mapping them to data values. Every plot has two position scales, for x and y aesthetics.
  34. [34]
    11 Colour scales and legends - GGPlot2 Book
    Gradient scales provide a robust method for creating any colour scheme you like. All you need to do is specify two or more reference colours, and ggplot2 will ...
  35. [35]
  36. [36]
    Extending ggplot2
    You'll learn how to extend ggplot2 by creating a new stat, geom, or theme. As you read this document, you'll see many things that will make you scratch your ...
  37. [37]
  38. [38]
    Quick plot — qplot - ggplot2
    qplot() is now deprecated in order to encourage the users to learn ggplot() as it makes it easier to create complex graphics.Missing: documentation | Show results with:documentation
  39. [39]
    Tidy data - tidyr
    Tidy data is a standard way to organize data, where each variable is a column, each observation is a row, and each value is a cell.Defining Tidy Data · Tidying Messy Datasets · Column Headers Are Values...Missing: ggplot2 | Show results with:ggplot2
  40. [40]
    18 Pipes | R for Data Science
    The pipe, %>% , comes from the magrittr package by Stefan Milton Bache. Packages in the tidyverse load %>% for you automatically, so you don't usually load ...
  41. [41]
    Save a ggplot (or other grid object) with sensible defaults — ggsave
    ggsave() is a convenient function for saving a plot. It defaults to saving the last plot that you displayed, using the size of the current graphics device.
  42. [42]
    Modify components of a theme - ggplot2
    Themes are a powerful way to customize the non-data components of your plots: i.e. titles, labels, fonts, background, gridlines, and legends.
  43. [43]
    17 Themes – ggplot2: Elegant Graphics for Data Analysis (3e)
    In this chapter you will learn how to use the ggplot2 theme system, which allows you to exercise fine control over the non-data elements of your plot.Missing: documentation | Show results with:documentation
  44. [44]
    Complete themes — ggtheme - ggplot2
    These are complete themes which control all non-data display. Use theme() if you just need to tweak the display of an existing theme.
  45. [45]
    Create an annotation layer - ggplot2
    This function adds geoms to a plot, but unlike a typical geom function, the properties of the geoms are not mapped from variables of a data frame.Usage · Arguments
  46. [46]
    8 Annotations – ggplot2: Elegant Graphics for Data Analysis (3e)
    An annotation supplies metadata for the plot: that is, it provides additional information about the data being displayed.
  47. [47]
    Cartesian coordinates with x and y flipped — coord_flip - ggplot2
    coord_flip() is useful for geoms and statistics that do not support the orientation setting, and converting the display of y conditional on x, to x conditional ...
  48. [48]
    Sequential, diverging and qualitative colour scales from ColorBrewer
    The brewer scales provide sequential, diverging, and qualitative color schemes from ColorBrewer, designed for discrete data, not continuous data.Usage · Arguments
  49. [49]
    Viridis colour scales from viridisLite — scale_colour_viridis_d - ggplot2
    Viridis scales provide perceptually uniform color maps, designed for color blindness, and are the default for ordered factors in ggplot2.<|separator|>
  50. [50]
    1 Introduction – ggplot2: Elegant Graphics for Data Analysis (3e)
    ggplot2, started in 2005, is an attempt to take the good things about base and lattice graphics and improve on them with a strong underlying model which ...Missing: initial | Show results with:initial
  51. [51]
    [PDF] History of S and R - The R Project for Statistical Computing
    Jun 15, 2006 · The S software was written by and for Bell. Labs statistics research. • The open-source R system, based on the S language , dominates new work.
  52. [52]
    [PDF] A Layered Grammar of Graphics
    Jan 1, 2012 · A Layered Grammar of Graphics. Hadley Wickham. Hadley Wickham is Assistant Professor of Statistics, Rice. University, Houston, TX 77030 ...
  53. [53]
    4.5 The grid Package | Mastering Software Development in R
    The ggplot2 package is built on top of grid graphics, so the grid graphics system “plays well” with ggplot2 objects. In particular, ggplot objects can be added ...4.5. 2 Grobs · 4.5. 3 Viewports · 4.5. 5 The Gridextra Package
  54. [54]
    Comparing different plotting systems in R - Atlantbh Sarajevo
    Feb 24, 2023 · It is considered a standard data visualization package to the degree that base graphics are just a stepping stone to the ggplot2. The package is ...
  55. [55]
    Comparing R Graphic Packages - ggplot2 vs. plotly - Justin Williams
    Jun 11, 2020 · ggplot2 creates static images with the extension of choice while plotly creates dynamic .html images which are web responsive. This difference ...
  56. [56]
    Let's clarify the successor to ggvis - shiny - Posit Community
    Sep 14, 2017 · ggvis is not maintained. Plotly, ggiraph, and gginteractive are potential alternatives. ggiraph is seen as the future of ggvis.
  57. [57]
    A Dramatic Tour through Python's Data Visualization Landscape ...
    Oct 2, 2016 · Conversely, ggplot and Altair implement similar and declarative “grammar of graphics”-approved ways to handle our simple case: you give their “ ...
  58. [58]
    Moving from R to python - 3/7 - matplotlib and seaborn - datistics
    Aug 23, 2018 · The main difference of matplotlib to ggplot2 is that it is optimised for wide formatted data tables while ggplot2 is optimised for data in the ...Seaborn · Scatter Plots · Customize Plots With...
  59. [59]
    Speeding up plotting of large data in base R - Clark Richards
    Apr 11, 2021 · The ggplot2 system is great – especially for those who find themselves adrift in the tidyverse, but in my experiments of plotting oceanographic ...
  60. [60]
    ggplot2 package - RDocumentation
    ggplot2 is a system for declaratively creating graphics, based on The Grammar of Graphics. You provide the data, tell ggplot2 how to map variables to ...
  61. [61]
    CRAN R Packages by Number of Downloads - DataScienceMeta
    CRAN R Packages by Number of Downloads ; 1, ggplot2, 171,918,647 ; 2, rlang, 160,808,318 ; 3, magrittr, 143,810,775 ; 4, dplyr, 134,032,597.
  62. [62]
    A personal history of the tidyverse - Hadley Wickham
    Oct 9, 2025 · I announced the name at my keynote at useR on June 29, 2016. And then a few months later in September, I released the tidyverse package. This ...
  63. [63]
    Teaching the Tidyverse in 2020 - Part 1: Getting started
    Jul 13, 2020 · The “official” tidyverse has existed since 2016 but most of its components have a much longer history, for example ggplot2 is the older package ...
  64. [64]
    The Grammar – ggplot2: Elegant Graphics for Data Analysis (3e)
    This chapter describes the theoretical basis of ggplot2: the layered grammar of graphics. The layered grammar is based on Wilkinson's grammar of graphics.Missing: origins | Show results with:origins
  65. [65]
  66. [66]
    3 Data visualisation - R for Data Science - Hadley Wickham
    ggplot2 implements the grammar of graphics, a coherent system for describing and building graphs. With ggplot2, you can do more faster by learning one system ...
  67. [67]
    Elegant Graphics for Data Analysis - ggplot2 - SpringerLink
    In stockThis new edition to the classic book by ggplot2 creator Hadley Wickham highlights compatibility with knitr and RStudio. ggplot2 is a data visualization package ...
  68. [68]
    Visualise sf objects — CoordSf - ggplot2
    na.rm. If FALSE , the default, missing values are removed with a warning. If TRUE , missing values are silently removed. show.legend. logical. Should this ...
  69. [69]
    How the New York Times uses R for Data Visualization | R-bloggers
    The New York Times introduced R to the world with a feature article in 2009, and has been using R for many years to support its pioneering presentation data ...
  70. [70]
    Using R at NYT Graphics - YouTube
    Aug 2, 2016 · Delivered by Josh Katz (Graphics Editor, The New York Times) at the 2016 New York R Conference on April 8th and 9th at Work-Bench.
  71. [71]
    Visualizing 50 Years of Cancer Mortality Rates Across the US ... - CDC
    Mar 26, 2020 · We developed the synchronized map and graph animation to visualize changes over time in yearly, age-adjusted, cancer mortality rates at the county, state, and ...
  72. [72]
    An interactive online dashboard for tracking COVID-19 in U.S. ... - NIH
    This R Shiny application aggregates data from multiple resources that track COVID-19 and visualizes them through an interactive, online dashboard.
  73. [73]
    Intro to Data Visualization with R & ggplot2 - YouTube
    Jul 2, 2021 · Intro to Data Visualization with R & ggplot2 | Google Data Analytics Certificate. 77K views · 4 years ago #DataAnalytics #GrowWithGoogle ...
  74. [74]
    Data Science: Visualization - Professional and Lifelong Learning
    This course covers the basics of data visualization and exploratory data analysis. We will use three motivating examples and ggplot2.
  75. [75]
    Data Visualization in R with ggplot2 - Coursera
    This course learning to use ggplot2 to make a variety of visualizations and to polish those visualizations using tools within ggplot as well as vector graphics ...
  76. [76]
    Data visualisation with ggplot2, online - Medical Sciences Division
    Course aim · How to visualise your data with ggplot2 · Perform statistical tests and add statistical information on the plot · Use ggplot2 extensions · Prepare ...
  77. [77]
    Programming tools: Adventures with R - Nature
    Dec 29, 2014 · A guide to the popular, free statistics and visualization software that gives scientists control of their own data analysis.
  78. [78]
    Experiencing beauty in everyday life | Scientific Reports - Nature
    Apr 24, 2024 · ggplot2: Elegant Graphics for Data Analysis (Springer, 2016). Potthoff, R. F. On the Johnson–Neyman technique and some extensions thereof ...
  79. [79]
    US economic time series - ggplot2
    This dataset was produced from US economic time series data available from https://fred.stlouisfed.org/. economics is in wide format, economics_long is in long ...
  80. [80]
    How to Plot a ROC Curve Using ggplot2 (With Examples) - Statology
    This tutorial explains how to create and interpret a ROC curve in R using the ggplot2 visualization package.
  81. [81]
    Multilingual plots with ggplot - Stack Overflow
    Dec 19, 2016 · Create plots of a set of data in two or more languages. It is of course possible to manually type ggplot layers to make axis titles and guide legend labels ...In R, how can I plot the location of item with their source on europe ...How to avoid ggplot grouping individual country observations in RMore results from stackoverflow.comMissing: adoption | Show results with:adoption
  82. [82]
    ggplot2 extensions
    This site tracks and lists ggplot2 extensions developed by R users in the community. · The aim is to make it easy for R users to find developed extensions.Gallery · Ggforce · Ggiraph · Ggtech
  83. [83]
    jrnold/ggthemes: Additional themes, scales, and geoms for ggplot2
    Some extra geoms, scales, and themes for ggplot. Install To install the stable version from CRAN, install.packages('ggthemes', dependencies = TRUE)
  84. [84]
    A Grammar of Animated Graphics • gganimate
    gganimate extends the grammar of graphics as implemented by ggplot2 to include the description of animation. It does this by providing a range of new grammar ...Getting Started · Animate · Ease_aes · TalksMissing: tidyverse | Show results with:tidyverse
  85. [85]
    Spatial Data Framework for ggplot2 • ggspatial
    This package is a framework for interacting with spatial data using ggplot2 as a plotting backend. The package supports sf package objects, sp package objects, ...Missing: tidyverse | Show results with:tidyverse
  86. [86]
    The Composer of Plots • patchwork
    patchwork is a package that expands the API to allow for arbitrarily complex composition of plots by, among others, providing mathematical operators for ...Package index · Controlling Layouts · Plot Assembly · Adding Annotation and Style
  87. [87]
    thomasp85/ggforce: Accelerating ggplot2 - GitHub
    ggforce is a package aimed at providing missing functionality to ggplot2 through the extension system introduced with ggplot2 v2.0.0.
  88. [88]
    CRAN: Package ggforce
    Jun 18, 2025 · The aim of 'ggplot2' is to aid in visual data investigations. This focus has led to a lack of facilities for composing specialised plots. ' ...
  89. [89]
    Explore and Visualize Your Data Interactively • esquisse
    This addin allows you to interactively explore your data by visualizing it with the ggplot2 package. It allows you to draw bar plots, curves, scatter plots, ...Missing: GUI | Show results with:GUI
  90. [90]
    ggbio (development version) - Bioconductor
    The ggbio package extends and specializes the grammar of graphics for biological data. The graphics are designed to answer common scientific questions.
  91. [91]
    ggbio: an R package for extending the grammar of graphics for ...
    The package provides the tools to create both typical and non-typicalbiological plots for genomic data, generated from core Bioconductor data structures ...
  92. [92]
    Bioconductor and ggplot2 4.0.0: What's Changing and How to Prepare
    Jul 7, 2025 · Introduction. A major update to ggplot2 (version 4.0. 0) is expected around mid-to-late July 2025. It brings a significant internal change, ...
  93. [93]
    Newest 'ggplot2' Questions - Stack Overflow
    I am trying to plot my in a bar graph, but when I try to reorder() the data, my variables aren't being detected. The data I am using is the Bollywood Movies ...
  94. [94]
    Gallery - ggplot2 extensions
    Plot light-related spectra, peaks, valleys, half maximum, labels with summaries and colours from spectral data (autoplot, stats, geoms, scales). stopauthor ...Missing: documentation | Show results with:documentation