Library / SDK
ggobi/ggally avatar
ggobi/ggally

GGally: pairwise plot matrices and network plots for ggplot2 in R

R package that extends ggplot2

617 stars131 forksRLicense varies

At a glance

What is it?
GGally extends ggplot2 with the multivariate views that a grammar of graphics does not give you for free, including a pairwise plot matrix, a scatterplot matrix, a parallel coordinates plot, a survival plot, and functions for plotting networks. It is a long-lived R package on CRAN, with an unstated licence and a plot matrix that is easier to try than to customise.
Who is it for?
GGally suits an R analyst who already works in ggplot2 and needs the multivariate views that a single plot cannot give, such as a pairwise plot matrix or a parallel coordinates plot, without writing the layout by hand.
Can I use it commercially?
Not without permission. GitHub finds no licence file in the repository, and without a licence all rights are reserved by default: you may read the code but not reuse it. Check the README, or ask the authors, before using it.
Is it still maintained?
Yes. The repository last received commits 7 days ago.
What is it written in?
Mainly R, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

ggplot2 draws one panel well, GGally draws many at once

ggplot2 is a plotting system for R based on the grammar of graphics, and it is very good at describing a single plot. The gap GGally fills is the one you hit the moment a dataset has more than two variables of interest. The README describes the package as extending ggplot2 by adding several functions to reduce the complexity of combining geoms with transformed data, and it lists what those functions cover: a pairwise plot matrix, a scatterplot plot matrix, a parallel coordinates plot, a survival plot, and several functions to plot networks. The audience is R users doing exploratory analysis who want those views without hand-assembling facets, themes, and transforms. The mechanism is that GGally stays inside the ggplot2 ecosystem, so the result is still ggplot2 output, and that matters more than it might sound because the alternatives would all be separate plotting systems with their own syntax.

The plot matrix is the reason most people install it

Of the list, the pairwise and scatterplot plot matrices are the workhorses. A plot matrix draws every pair of variables against each other in a grid, which is the fastest way to see correlations, outliers, and clusters across a whole data frame at once. Building one by hand in ggplot2 means writing the facet logic, dealing with the fact that the diagonal holds a different plot type from the off-diagonal cells, and reconciling the transformed data each panel needs. The README frames GGally's contribution precisely as reducing that complexity. The second entry, a scatterplot plot matrix, is the same idea with a different emphasis on the scatter cells, and the parallel coordinates plot solves the complementary problem, letting you trace each observation across all variables as a line so that multivariate structure becomes visible on a single canvas.

Networks and survival analysis are the less obvious additions

The other two categories in the README are what make the package more than a plotting matrix generator. The several functions to plot networks cover a shape of problem that ggplot2 does not address at all, since a network graph needs nodes, edges, and a layout, and none of those are geoms in the usual sense. A survival plot covers the other direction, putting right-censored time-to-event data on the page in a form you can read and compare across groups. Both are the kind of thing an analyst ends up building from scratch once, badly, and then keeps copying between projects. Packaging them alongside the pairwise views means the same package, and the same ggplot2 look, covers a data exploration workflow from single variable to graph to survival analysis.

Installing is a CRAN call or a GitHub call

The README gives two routes, and both are single lines from the R console. From GitHub, using the pak package:

r
# Github
pak::pak("ggobi/ggally")

Or from CRAN, the standard installer:

r
# CRAN
install.packages("GGally")

You should end up with the same package either way, and the CRAN route is the one to prefer for anything reproducible, since the CRAN version is the one that has passed the R CMD check the project runs in CI and the one that carries a version number in the release history. The GitHub route is for when you want the development version. The package is distributed under the name GGally, capitalised, while the GitHub repository is `ggobi/ggally` in lower case, which trips people up the first time they search for it.

The repository is a full R package, not a script collection

The repository layout shows the conventions of a package built to CRAN's standards. There is a `DESCRIPTION` and `NAMESPACE` file, a `man/` directory with the generated help pages and a `man-roxygen/` directory with the roxygen templates those pages are built from, a `tests/` directory, `vignettes/` for the long-form documentation, and `_pkgdown.yml` for the website that GGally publishes at ggobi.github.io. The data directory holds the datasets, `data-raw/` holds the scripts that generate them, and `revdep/` is the directory a CRAN package uses to check reverse dependencies, meaning the packages that depend on it. There is a `NEWS.md` for the changelog, `cran-comments.md` for the release notes sent to CRAN, and a `scripts/` directory for the build and release automation. If you are reading the source, `R/` is where the functions live, and the vignettes are where the intended usage is explained in prose.

Maintenance is steady, and the licence is the open question

The release history shows regular, modest movement: v2.2.1 in February 2024, v2.3.0 in July 2025, and v2.4.0 in August 2025, with the last push on 2026-10-16. That cadence fits a package whose core functionality is stable and whose work is compatibility with new versions of ggplot2 and R, rather than new features arriving in large steps. The repository has a Zenodo DOI badge, which is how CRAN packages get a citable archive snapshot, and the project maintains a presence on the Posit community forum. The gap worth naming is the licence. The repository does not declare one, so before you put GGally in a commercial or closed-source deliverable, find out the terms yourself rather than assuming the permissive default that most of the tidyverse carries. The R-CMD-check workflow badge in the README indicates the package is validated against the standard CRAN checks on every push, which is the strongest quality signal available in this ecosystem.

Where GGally is the wrong tool

If you want exactly one chart type, for example a single scatterplot with a regression line, pulling in a multivariate plotting package is the wrong move, because you would use the ggplot2 functions you already have. If your data has more variables than can reasonably fit in one matrix, the pairwise views can also become unreadable, and the parallel coordinates plot becomes a hairball with a wide frame, which is a problem of the data rather than the package but is worth anticipating. Finally, GGally is a fixed set of functions rather than a general extension mechanism. It reduces complexity for the views it implements, and the README does not claim it is a framework for building new plot types. Teams that need a bespoke multivariate layout will be writing ggplot2 code directly, and should expect the same amount of work either way.

Editorial conclusion

GGally suits an R analyst who already works in ggplot2 and needs the multivariate views that a single plot cannot give, such as a pairwise plot matrix or a parallel coordinates plot, without writing the layout by hand. It is the wrong tool if you need one specific chart type, because the package is a bundle of related multivariate views rather than a focused implementation, and the wrong tool if your review process requires a known licence, since the repository does not state one. Before adopting it, run the two installation lines and check the resulting help pages for the plot type you care about, and if you are extending it, read the `R/` sources and the `vignettes/` rather than assuming the ggplot2 theme arguments behave as they do elsewhere.

Frequently asked questions

How do I install GGally?

From the R console, either install the CRAN version with `install.packages("GGally")` or the development version from GitHub with `pak::pak("ggobi/ggally")`. The CRAN version is the one that has passed the package's R CMD check.

What does GGally add to ggplot2?

The README lists a pairwise plot matrix, a scatterplot plot matrix, a parallel coordinates plot, a survival plot, and several functions to plot networks. The stated goal is to reduce the complexity of combining geoms with transformed data.

Can I plot a network with GGally?

Yes. The package includes several functions to plot networks, which is one of the multivariate view types the README lists among the additions to ggplot2.

What is the latest GGally release and where is the changelog?

The most recent release listed is v2.4.0 from 2025-08-29, after v2.3.0 in July 2025 and v2.2.1 in February 2024, and the last push was on 2026-10-16. The changelog lives in the `NEWS.md` file at the repository root.

What licence is GGally released under?

The repository does not state a licence, so the terms are not clear from the project files and should be confirmed before use in a commercial or closed source product. The package is distributed on CRAN and documented at ggobi.github.io/ggally.

Official sources

  1. ggobi/ggally on GitHub
  2. Issues
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ggobi-ggally.svg)](https://hysenlabs.com/projects/ggobi-ggally)

Was this useful?