该内容已被发布者删除 该内容被自由微信恢复
文章于 4月5日 下午 11:10 被检测为删除。
查看原文
被用户删除
其他

R语言绘图 | 使用corrplot绘制相关性热图

小陈的R语言笔记 小陈的R语言笔記 2024-04-05

介绍

R语言的corrplot包能够优雅地将数据的相关性可视化出来,实现数据的相关性展示。corrplot 非常易于使用,在可视化方法、图形布局、颜色、图例、文本标签等方面提供了丰富的绘图选项。它还提供 p 值和置信区间,帮助用户确定相关性的统计意义。

安装和加载R包

install.packages("corrplot")
library(corrplot)

可视化方法

corrplot 包中有七种可视化方法,分别命名为:'circle''square''ellipse''number''shade''color''pie'。

circle 以圆圈的面积表示相应相关系数的绝对值。

square 正方形的面积表示相应相关系数的绝对值。

ellipse 使用椭圆的大小和形状来表示相关性系数的强度和方向。

number 以不同颜色的系数数字表示相关性系数。

color 以大小相同、颜色不同的正方形表示相关性系数。

shade 类似于color ,但负系数字形是阴影的。

pie 圆圈按顺时针方向填充表示正值,按逆时针方向填充表示负值。

yyds = cor(mtcars)
corrplot(yyds) #默认情况下为圆形
corrplot(yyds, method = "square")
corrplot(yyds,method = "ellipse")
corrplot(yyds,method = "number")
corrplot(yyds,method = "color")
corrplot(yyds, method = "shade")
corrplot(yyds, method = "pie")

排列方式

通过order()函数:'AOE''FPC''hclust''alphabet'

AOE 代表 "A-O-E",首先按照绝对值的大小进行排序(A),然后按照相关性系数的值(正或负)进行排序(O),最后按照相关性系数的接近于0的程度进行排序(E)。

FPC 代表按照相关性系数的方差解释比例进行排序。

hclust 使用层次聚类的方法对相关性系数进行排序,在相关矩阵图的周围绘制矩形。

alphabet 按字母顺序排列。

corrplot(yyds,method = "shade",order = "AOE")
corrplot(yyds, method = "square", order = "FPC")
corrplot(yyds, method = 'square', order = 'hclust',
         addrect = 3, rect.col = 'blue', rect.lwd = 3, tl.pos = 'd')
#addrect = 3: 添加三个矩形框
#rect.col = 'blue':矩形框的颜色设置为蓝色。
#rect.lwd = 3:矩形框的线宽设置为3。
#tl.pos = 'd':矩形框的左上角标记的位置设置为“d”,表示在数据点的位置上显示标记。
corrplot(yyds,method = "shade",order = "alphabet")

type = "lower" 只显示下三角部分

type = "upper" 只显示上三角部分

diag = FALSE 不显示对角线上的相关性系数

corrplot(yyds, method = "square", order = "FPC"type = "lower", diag = FALSE)
corrplot(yyds, method = "square", order = "FPC"type = "upper", diag = FALSE)
corrplot(yyds,method = "shade",order = "AOE",diag = FALSE)

还可以通过seriation包对矩阵进行重新排序,这里就不一一演示了

色谱、颜色图例和文字图例

可以从 COL1() 和 COL2() 中获得连续和发散的颜色,下面显示了来自 COL2() 的所有发散颜色和来自 COL1() 的连续颜色。使用 COL1() 和 COL2():

COL1(sequential = c("Oranges""Purples""Reds""Blues""Greens"
                    "Greys""OrRd""YlOrRd""YlOrBr""YlGn"), n = 200)

COL2(diverging = c("RdBu""BrBG""PiYG""PRGn""PuOr""RdYlBu"), n = 200)

cl.pos 用于颜色标签的位置。如果是字符,则必须是 'r'(表示右侧,如果是 type='upper''full' 则默认为右侧)、'b'(表示底部,如果是 type='lower' 则默认为底部)或 'n'(表示不绘制颜色标签)之一。

cl.ratio 彩色图例的宽度,建议为 0.1~0.2。

tl.pos 用于文本标签的位置。它可以是字符或逻辑值。如果是字符,则必须是 'lt'、'ld'、'td'、'd'、'l' 'n' 中的一个。'lt'表示左侧和顶部,'ld'表示左侧和对角线,'td'表示顶部和对角线(附近),'d' 表示对角线,'l' 表示左侧,'n' 表示不添加文本标签。

tl.cex 表示文本标签的大小。

tl.srt 文本标签字符串旋转的度数。

## 删除颜色图例、文本图例和主对角线字形
corrplot(yyds, order = 'AOE', cl.pos = 'n', tl.pos = 'n',
         col = c('white''black'), bg = 'gold2')

可视化非相关矩阵

is.corr=FALSE 可视化非相关矩阵is.corr=TRUE 时,col.lim 只影响颜色图例

col.lim  指定颜色

win.asp 调整长宽比

N1 = matrix(runif(80, -15, 10), 8)
corrplot(N2, is.corr = FALSE, method = 'color', col.lim = c(-15, 10), tl.pos = 'n',
         col = COL2('PiYG'), cl.pos = 'b', addCoef.col = 'grey50')

p 值和置信区间

p.mat 是 p 值矩阵,如果 NULL、参数 sig.level、insig, pch、pch.col、pch.cex 无效。

sig.level 显著水平,默认为 0.05。如果 p-mat 中的 p 值大于 sig.level,则相应的相关系数被视为不显著。如果 insig 是 'label_sig',sig.level 可以是显著性水平的递增向量,在这种情况下,pch 将在最高 p 值区间使用一次,在每个较低 p 值区间使用多次。

insig 专门的不显著相关系数、'pch'、'p-value'、'blank','n'或 'label_sig'。如果是 'blank',则擦去相应的字形;如果是 'p-value',则在相应的字形上添加 p 值;如果是 'pch',则在相应的字形上添加字符;如果是 'n',则不采取任何措施;如果是 'label_sig',则用 pch 标记显著相关。

pch 用于在相关系数不显著的字形上添加字符(仅在 insig 为 'pch' 时有效)。

plotCI 是表示绘制置信区间的方法的字符。如果 'n',则不绘制置信区间。如果 'rect',则绘制上边表示上限、下边表示下限的矩形。

lowCI.mat 是置信区间下限矩阵。

uppCI.mat 是置信区间上限的矩阵。

lowCI 是置信区间矩阵的下限。

uppCI 是置信区间矩阵的下限。

testRes = cor.mtest(mtcars, conf.level = 0.95)

## 根据显著性水平计算的不显著值
corrplot(yyds, p.mat = testRes$p, sig.level = 0.10, order = 'hclust', addrect = 2)
## 不显著系数留空
## 添加重要的相关系数
corrplot(yyds, p.mat = testRes$p, method = 'circle'type = 'lower', insig='blank',
         addCoef.col ='black', number.cex = 0.8, order = 'AOE', diag=FALSE)
## 不显著系数留空
## 添加所有相关系数
corrplot(yyds, p.mat = testRes$p, method = 'circle'type = 'lower', insig='blank',
         order = 'AOE', diag = FALSE)$corrPos -> p1
text(p1$x, p1$y, round(p1$corr, 2))
## 添加无意义系数的 p 值
corrplot(yyds, p.mat = testRes$p, insig = 'p-value')

## 添加所有 p 值
corrplot(yyds, p.mat = testRes$p, insig = 'p-value', sig.level = -1)
## 增加重要级星
corrplot(yyds, p.mat = testRes$p, method = 'color', diag = FALSE, type = 'upper',
         sig.level = c(0.001, 0.01, 0.05), pch.cex = 0.9,
         insig = 'label_sig', pch.col = 'grey20', order = 'AOE')
## 添加重要等级星和星群矩形
corrplot(yyds, p.mat = testRes$p, tl.pos = 'd', order = 'hclust', addrect = 2,
         insig = 'label_sig', sig.level = c(0.001, 0.01, 0.05),
         pch.cex = 0.9, pch.col = 'grey20')
# 可视化置信区间
corrplot(yyds, lowCI = testRes$lowCI, uppCI = testRes$uppCI, order = 'hclust',
         tl.pos = 'd', rect.col = 'navy', plotC = 'rect', cl.pos = 'n')

# 可视化置信区间,并划出重要系数
corrplot(yyds, p.mat = testRes$p, lowCI = testRes$lowCI, uppCI = testRes$uppCI,
         addrect = 3, rect.col = 'navy', plotC = 'rect', cl.pos = 'n')

参考资料:

[1]https://cran.r-project.org/web/packages/corrplot/vignettes/corrplot-intro.html


继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存