# Plot matrix with the R package GGally

November 13, 2013
By

Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.

I am glad to have found the `R` package `GGally`. `GGally` is a convenient package built upon `ggplot2` that contains templates for different plots to be combined into a plot matrix through the function `ggpairs`. It is a nice alternative to the more limited `pairs` function. The package has also functions to deal with parallel coordinate and network plots, none of which I have tried yet.

The following code shows how easy it is to create very informative plots like the one in Figure 1.

```require(GGally)
data(tips, package="reshape")

ggpairs(data=tips, # data.frame with variables
columns=1:3, # columns to plot, default to all.
title="tips data", # title of the plot
colour = "sex") # aesthetics, ggplot2 style
```

Plots like the one above are very helpful, among others things, in the pre-processing stage of a classification problem, where you want to analyze your predictors given the class labels. It is particularly amazing that we can now use the arguments `colour`, `shape`, `size` and `alpha` provided by `ggplot2`.

Controlling plot types

We have some control over which type of plots to use. We can choose which type of graph will be used for continuous vs. continuous (continuous), continuous vs. discrete (combo) and discrete vs. discrete (discrete). We can also have different plots for the upper diagonal (upper) and for the lower diagonal (lower).

For example, the code below

```pm = ggpairs(data=tips,
columns=1:3,
upper = list(continuous = "density"),
lower = list(combo = "facetdensity"),
title="tips data",
colour = "sex")
print(pm)
```

creates Figure 2, which uses the same data used in Figure 1, but with a density plot in the upper diagonal for continuous vs. continuous variables and a density plot faceted by a discrete variable in a continuous vs. discrete scenario.

The details section of the help file of the `ggpairs` function describes which plots are available for each scenario. Currently, the following are described there:

• continuous: exactly one of ‘points’, ‘smooth’, ‘density’, ‘cor’ or ‘blank’;
• combo: exactly one of ‘box’, ‘dot’, ‘facethist’, ‘facetdensity’, ‘denstrip’ or ‘blank’;
• discrete: exactly one of ‘facetbar’,’ratio’ or ‘blank’.

Auxiliary functions

We can insert a customized plot within a plot matrix created by `ggpairs` using the function `putPlot`. The following code creates a custom ggplot object `cp` and insert it in the second row and third column of the ggpairs object `pm`.

```cp = ggplot(data.frame(x=1:10, y=1:10)) +
geom_point(aes(x, y))

putPlot(pm, cp, 2, 3)
```

We can also retrieve an specific ggplot object from a ggpairs object using the `getPlot` function, with the following syntax:

```getPlot(plotMatrix, rowFromTop, columnFromLeft)
```

References: R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.