| Type: | Package |
| Title: | Visualization of a Correlation Matrix using 'ggplot2' |
| Version: | 0.2.0 |
| Date: | 2026-07-08 |
| Description: | The 'ggcorrplot' package can be used to visualize easily a correlation matrix using 'ggplot2'. It provides a solution for reordering the correlation matrix and displays the significance level on the plot. It also includes a function for computing a matrix of correlation p-values. |
| License: | GPL-2 |
| URL: | https://www.sthda.com/english/wiki/ggcorrplot-visualization-of-a-correlation-matrix-using-ggplot2 |
| BugReports: | https://github.com/kassambara/ggcorrplot/issues |
| Depends: | R (≥ 3.3), ggplot2 (≥ 3.3.6) |
| Imports: | reshape2, stats |
| Suggests: | testthat (≥ 3.0.0), knitr, spelling, vdiffr (≥ 1.0.0) |
| Encoding: | UTF-8 |
| Language: | en-US |
| RoxygenNote: | 7.1.0 |
| Config/testthat/edition: | 3 |
| NeedsCompilation: | no |
| Packaged: | 2026-07-08 15:18:07 UTC; kassambara |
| Author: | Alboukadel Kassambara [aut, cre],
Indrajeet Patil |
| Maintainer: | Alboukadel Kassambara <alboukadel.kassambara@gmail.com> |
| Repository: | CRAN |
| Date/Publication: | 2026-07-08 16:00:02 UTC |
Visualization of a correlation matrix using ggplot2
Description
ggcorrplot(): A graphical display of a correlation matrix using ggplot2.
cor_pmat(): Compute a correlation matrix p-values.
Usage
ggcorrplot(
corr,
method = c("square", "circle"),
type = c("full", "lower", "upper"),
ggtheme = ggplot2::theme_minimal,
title = "",
show.legend = TRUE,
legend.title = "Corr",
show.diag = NULL,
colors = c("blue", "white", "red"),
outline.color = "gray",
hc.order = FALSE,
hc.method = "complete",
lab = FALSE,
lab_col = "black",
lab_size = 4,
lab_fontface = "plain",
sig.stars = FALSE,
p.mat = NULL,
sig.level = 0.05,
insig = c("pch", "blank"),
pch = 4,
pch.col = "black",
pch.cex = 5,
tl.cex = 12,
tl.col = NULL,
tl.srt = 45,
tl.vjust = 1,
tl.hjust = 1,
digits = 2,
as.is = FALSE,
nsmall = 0L,
leading.zero = TRUE,
legend.limit = c(-1, 1),
circle.scale = 1,
coord.fixed = TRUE
)
cor_pmat(x, ..., use = c("pairwise.complete.obs", "everything"))
Arguments
corr |
the correlation matrix to visualize |
method |
character, the visualization method of correlation matrix to be used. Allowed values are "square" (default), "circle". |
type |
character, "full" (default), "lower" or "upper" display. |
ggtheme |
ggplot2 function or theme object. Default value is 'theme_minimal'. Allowed values are the official ggplot2 themes including theme_gray, theme_bw, theme_minimal, theme_classic, theme_void, .... Theme objects are also allowed (e.g., 'theme_classic()'). |
title |
character, title of the graph. |
show.legend |
logical, if TRUE the legend is displayed. |
legend.title |
a character string for the legend title. lower triangular, upper triangular or full matrix. |
show.diag |
NULL or logical, whether display the correlation
coefficients on the principal diagonal. If |
colors |
a vector of colors for the fill gradient. The default is a
length-3 vector for the low, mid and high correlation values (mapped with
|
outline.color |
the outline color of square or circle. Default value is "gray". |
hc.order |
logical value. If TRUE, correlation matrix will be hc.ordered using hclust function. |
hc.method |
the agglomeration method to be used in hclust (see ?hclust). |
lab |
logical value. If TRUE, add correlation coefficient on the plot. |
lab_col, lab_size |
size and color to be used for the correlation coefficient labels. used when lab = TRUE. |
lab_fontface |
the font face ( |
sig.stars |
logical value. If |
p.mat |
matrix of p-value. If NULL, arguments sig.level, insig, pch, pch.col, pch.cex is invalid. |
sig.level |
significant level, if the p-value in p-mat is bigger than sig.level, then the corresponding correlation coefficient is regarded as insignificant. |
insig |
character, specialized insignificant correlation coefficients, "pch" (default), "blank". If "blank", wipe away the corresponding glyphs; if "pch", add characters (see pch for details) on corresponding glyphs. |
pch |
add character on the glyphs of insignificant correlation coefficients (only valid when insig is "pch"). Default value is 4. |
pch.col, pch.cex |
the color and the cex (size) of pch (only valid when insig is "pch"). |
tl.cex, tl.col, tl.srt |
the size, the color and the string rotation of
text label (variable names). |
tl.vjust, tl.hjust |
the vertical and horizontal justification of the
x-axis text labels, passed to |
digits |
Decides the number of decimal digits to be displayed (Default: '2'). |
as.is |
A logical passed to |
nsmall |
the minimum number of digits to the right of the decimal point
in the coefficient labels, passed to |
leading.zero |
logical. If |
legend.limit |
a length-2 numeric vector giving the limits of the fill
color scale. Default |
circle.scale |
a scaling factor for the circle sizes when
|
coord.fixed |
logical value. If |
x |
numeric matrix or data frame |
... |
other arguments to be passed to the function cor.test. |
use |
character, how to treat pairs involving missing values when
deciding which cells are |
Details
cor_pmat() tests each pair of columns with
cor.test. A pair with fewer than three overlapping
non-missing observations (which cor.test cannot test,
e.g. two variables that never co-occur) yields NA for that cell
rather than aborting the whole computation. Pairs that can be tested are
computed as before, and errors they raise are passed through.
The use argument controls which pairs are returned as NA so
the p-value matrix can be aligned with a correlation matrix built the same
way. With the default "pairwise.complete.obs" every pair that has
enough overlapping observations is tested (the previous behavior). With
"everything" a pair is set to NA whenever either variable has
any missing value, so the NA pattern matches
cor(x) with its default use = "everything".
Value
ggcorrplot(): Returns a ggplot2
cor_pmat(): Returns a matrix containing the p-values of correlations
Examples
# Compute a correlation matrix
data(mtcars)
corr <- round(cor(mtcars), 1)
corr
# Compute a matrix of correlation p-values
p.mat <- cor_pmat(mtcars)
p.mat
# Visualize the correlation matrix
# --------------------------------
# method = "square" or "circle"
ggcorrplot(corr)
ggcorrplot(corr, method = "circle")
# Reordering the correlation matrix
# --------------------------------
# using hierarchical clustering
ggcorrplot(corr, hc.order = TRUE, outline.color = "white")
# Types of correlogram layout
# --------------------------------
# Get the lower triangle
ggcorrplot(corr,
hc.order = TRUE, type = "lower",
outline.color = "white"
)
# Get the upeper triangle
ggcorrplot(corr,
hc.order = TRUE, type = "upper",
outline.color = "white"
)
# Change colors and theme
# --------------------------------
# Argument colors
ggcorrplot(corr,
hc.order = TRUE, type = "lower",
outline.color = "white",
ggtheme = ggplot2::theme_gray,
colors = c("#6D9EC1", "white", "#E46726")
)
# Add correlation coefficients
# --------------------------------
# argument lab = TRUE
ggcorrplot(corr,
hc.order = TRUE, type = "lower",
lab = TRUE,
ggtheme = ggplot2::theme_dark(),
)
# Add correlation significance level
# --------------------------------
# Argument p.mat
# Barring the no significant coefficient
ggcorrplot(corr,
hc.order = TRUE,
type = "lower", p.mat = p.mat
)
# Leave blank on no significant coefficient
ggcorrplot(corr,
p.mat = p.mat, hc.order = TRUE,
type = "lower", insig = "blank"
)
# Changing number of digits for correlation coeffcient
# --------------------------------
ggcorrplot(cor(mtcars),
type = "lower",
insig = "blank",
lab = TRUE,
digits = 3
)