corplot {JWileymisc} | R Documentation |
Heatmap of a Correlation Matrix
Description
This function creates a heatmap of a correlation matrix using ggplot2.
Usage
corplot(
x,
coverage,
pvalues,
type = c("both", "cor", "p", "coverage"),
digits = 2,
order = c("cluster", "asis"),
...,
control.grobs = list()
)
Arguments
x |
A correlation matrix or some other square symmetric matrix. |
coverage |
An (optional) matrix with the same dimensions as
|
pvalues |
An (optional) matrix with the same dimensions as
|
type |
A character string indicating what to show on top of the heatmap. Can be
‘coverage’, in which case bubble points show coverage;
‘p’, in which case p values are shown;
‘cor’, in which case correlations are shown; or
‘both’, in which case both correlations and p-values are shown.
Only has an effect if a coverage (or pvalue) matrix is passed
also. Defaults to |
digits |
The number of digits to round to when printing the
correlations on the heatmap. Text is suppressed when a coverage
matrix is passed and |
order |
A character string indicating how to order the resulting plot. Defaults to ‘cluster’ which uses hierarchical clustering to sensibly order the variables. The other option is ‘asis’ in which case the matrix is plotted in the order it is passed. |
... |
Additional arguments currently only passed to
|
control.grobs |
A list of additional |
Details
The actual plot is created using ggplot2
and geom_tile
.
In addition to creating the plot, the variables are ordered based on a
hierarchical clustering of the correlation matrix. Specifically, 1 - x
is used as the distance matrix. If coverage is passed, will also add a bubble
plot with the area proportional to the proportion of data present for any
given cell. Defaults for ggplot2
are set, but it is possible to use a
named list of quote()d ggplot calls to override all defaults. This is not
expected for typical use. Particularly main, points, and text as these rely
on internal variable names; however, labels, the gradient color, and area
scaling can be adjusted more safely.
Value
Primarily called for the side effect of creating a plot.
However, the ggplot2
plot object is returned,
so it can be saved, replotted, edited, etc.
Examples
# example plotting the correlation matrix from the
# mtcars dataset
corplot(cor(mtcars))
dat <- as.matrix(iris[, 1:4])
# randomly set 25% of the data to missing
set.seed(10)
dat[sample(length(dat), length(dat) * .25)] <- NA
cor(dat, use = "pair")
cor(dat, use = "complete")
# create a summary of the data (including coverage matrix)
sdat <- SEMSummary(~ ., data = dat, use = "pair")
str(sdat)
# using the plot method for SEMSummary (which basically just calls corplot)
## getting correlations above diagonal and p values below diagonal#'
plot(sdat)
## get correlations only
plot(sdat, type = "cor")
## showing coverage
plot(sdat, type = "coverage")
# use the control.grobs argument to adjust the coverage scaling
# to go from 0 to 1 rather than the range of coverage
corplot(x = sdat$sSigma, coverage = sdat$coverage,
type = "coverage",
control.grobs = list(area = quote(scale_size_area(limits = c(0, 1))))
)
# also works with plot() on a SEMSummary
plot(x = sdat, type = "coverage",
control.grobs = list(area = quote(scale_size_area(limits = c(0, 1))))
)
rm(dat, sdat)