使用参考:https://rpkgs.datanovia.com/ggcorrplot/
我只是跟着这个ggcorrplot包的文档教程学习了一遍。
这个包使用起来非常easy!
ggcorrplot包可以使用ggplot2轻松可视化相关系数矩阵。
一个矩阵的两列之间,可以算出相关系数。
还可以同时计算出相关系数和p值。
参数
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 = FALSE,
colors = c("blue", "white", "red"), outline.color = "gray",
hc.order = FALSE, hc.method = "complete", lab = FALSE,
lab_col = "black", lab_size = 4, p.mat = NULL, sig.level = 0.05,
insig = c("pch", "blank"), pch = 4, pch.col = "black",
pch.cex = 5, tl.cex = 12, tl.col = "black", tl.srt = 45,
digits = 2)
cor_pmat(x, ...)
参数很多,使用的时候,最基本的就是那么几个。
data(mtcars)#这里使用的是R语言自带的一个数据集合,你使用的时候换成自己的就行。
corr <- round(cor(mtcars), 1)#算相关系数的核心函数
p.mat <- cor_pmat(mtcars)#算p-values
ggcorrplot(
corr,
p.mat = p.mat,
hc.order = TRUE,
type = "lower",
insig = "blank",
outline.color = "white",
ggtheme = ggplot2::theme_gray,
colors = c("#6D9EC1", "white", "#E46726")
)
#画图
#corr相关系数变量;
#p.mat p值变量
#hc.erder是否聚类
#显示上半部分还是下半部分
#insig不显著的用白色框表示
#图中的框边为白色
#ggtheme
#colors配色
图中颜色深浅表示相关性强弱,白色表示不相关。
安装
install.packages("ggcorrplot")
# Install
if(!require(devtools)) install.packages("devtools")
devtools::install_github("kassambara/ggcorrplot")
如果第一种方法不能安装,请使用第二种。我当时用第一种方法显示缺失lib。
加载
library(ggcorrplot)
开始
mtcars数据集将在下面的R代码中使用。函数cor_pmat()[在ggcorrplot中]计算相关p值的矩阵。
# Compute a correlation matrix
data(mtcars)
corr <- round(cor(mtcars), 1)
head(corr[, 1:6])
#> mpg cyl disp hp drat wt
#> mpg 1.0 -0.9 -0.8 -0.8 0.7 -0.9
#> cyl -0.9 1.0 0.9 0.8 -0.7 0.8
#> disp -0.8 0.9 1.0 0.8 -0.7 0.9
#> hp -0.8 0.8 0.8 1.0 -0.4 0.7
#> drat 0.7 -0.7 -0.7 -0.4 1.0 -0.7
#> wt -0.9 0.8 0.9 0.7 -0.7 1.0
# Compute a matrix of correlation p-values
p.mat <- cor_pmat(mtcars)
head(p.mat[, 1:4])
#> mpg cyl disp hp
#> mpg 0.000000e+00 6.112687e-10 9.380327e-10 1.787835e-07
#> cyl 6.112687e-10 0.000000e+00 1.802838e-12 3.477861e-09
#> disp 9.380327e-10 1.802838e-12 0.000000e+00 7.142679e-08
#> hp 1.787835e-07 3.477861e-09 7.142679e-08 0.000000e+00
#> drat 1.776240e-05 8.244636e-06 5.282022e-06 9.988772e-03
#> wt 1.293959e-10 1.217567e-07 1.222320e-11 4.145827e-05
corr()函数计算矩阵每个列之间的两两相关性质,假设你有两列数据,那么计算结果就是2*2的系数矩阵。
round()函数是保留相关系数几个小数点位数
cor_pmat()计算每个列之间的相关系数的p值
相关性系数矩阵的可视化
这便是该包的核心功能
# Visualize the correlation matrix
# --------------------------------
# method = "square" (default)
ggcorrplot(corr)
图中颜色深浅表示从负相关到正相关的程度
但是不够好看!
下面是圈形的
# method = "circle"
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",#这个参数upper或者为lower
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)
#增加相关性p值,不显著的打叉
# 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",
lab=TRUE,
insig = "blank",
)
还可以把不相关的用空白表示