# Create a correlation matrix ---------------------------------------------
#' Plot a correlation matrix of numerical variables
#'
#' This function creates a nicely formatted, standardised correlation matrix of numerical variables.
#' Make sure that long variables names are are shortened before using the function for easier interpretation.
#'
#' @param df A data frame.
#' @param method A character string indicating which correlation coefficient (or covariance) should be computed. Options are: "spearman" (default), "pearson" or "kendall".
#' @param order Ordering method of the correlation matrix. Options are: "alphabet" (default) and "hclust".
#' @param label_size Size of the text label. Defaults to 0.7.
#' @param number_size Size of the correlation number. Defaults to 0.9.
#' @examples
#' diamonds %>%
#' plot_correlation()
#'
#' @import dplyr
#' @importFrom magrittr %>%
#' @importFrom rlang .data
#' @export
plot_correlation <- function(df,
method = "spearman",
order = "alphabet",
label_size = 0.7,
number_size = 0.7
){
if (!is.data.frame(df))
stop("object must be a data frame")
if (any(!is.character(method), !is.character(order)))
stop("arguments must be character")
if (!is.numeric(label_size))
stop("argument must be numeric")
cor_mtx <- df %>%
select_if(is.numeric) %>%
stats::cor(use = "pairwise.complete.obs", method = method)
cor_sig <- corrplot::cor.mtest(cor_mtx, conf.level = .95)
corrplot::corrplot(
cor_mtx,
col = grDevices::colorRampPalette(c("#e84a5f", "white", "#4db69e"))(50),
order = order,
tl.cex = label_size,
addCoef.col = "black",
number.cex = number_size,
method = "circle",
type = "lower",
tl.pos = "dt",
addrect = 3,
tl.col = "black",
tl.srt = 45,
p.mat = if (order == "alphabet") {NULL} else {cor_sig$p},
insig = "blank",
diag = FALSE)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.