R语言绘制热图(其实是相关系数图)实践(二)corrplot包

前言

在我的上一篇的内容中(R语言绘制热图实践(一)pheatmap包 ),我以绘制相关系数图为出发点,介绍了使用pheatmap包画相关系数图和热图的一些使用。
为了对比,这篇将介绍使用R包corrplot进行相关系数图的一些实践以及corrplot包的一些使用。

corrplot包简介

官方文档
The corrplot package is a graphical display of a correlation matrix, confidence interval. It also contains some algorithms to do matrix reordering. In addition, corrplot is good at details, including choosing color, text labels, color labels, layout, etc.
 
简单地说,corrplot包主要针对相关系数输出的结果进行可视化,可以实现选择颜色,文本标签,颜色标签,布局等的操作。

语法和常用参数介绍

函数语法

corrplot(corr,
	method = c("circle", "square", "ellipse", "number", "shade", "color", "pie"),
	type = c("full", "lower", "upper"), add = FALSE,
	col = NULL, bg = "white", title = "",  is.corr = TRUE,		
	diag = TRUE, outline = FALSE, mar = c(0,0,0,0),
	addgrid.col = NULL, addCoef.col = NULL, addCoefasPercent = FALSE, 
	order = c("original", "AOE", "FPC", "hclust", "alphabet"),
	hclust.method = c("complete", "ward", "single", "average",
                      "mcquitty", "median", "centroid"),
	addrect = NULL, rect.col = "black", rect.lwd = 2,
	tl.pos = NULL, tl.cex = 1,
	tl.col = "red", tl.offset = 0.4, tl.srt = 90,
	cl.pos = NULL, cl.lim = NULL,
	cl.length = NULL, cl.cex = 0.8, cl.ratio = 0.15, 
	cl.align.text = "c",cl.offset = 0.5,
	addshade = c("negative", "positive", "all"),
	shade.lwd = 1, shade.col = "white",
	p.mat = NULL, sig.level = 0.05,
	insig = c("pch","p-value","blank", "n"),
	pch = 4, pch.col = "black", pch.cex = 3,
	plotCI = c("n","square", "circle", "rect"),
	lowCI.mat = NULL, uppCI.mat = NULL, ...)

参数介绍

这部分的内容参考了参考资料中的第一篇。

corr:需要可视化的相关系数矩阵

method:指定可视化的方法,可以是圆形、方形、椭圆形、数值、阴影、颜色或饼图形

type:指定展示的方式,可以是完全的、下三角或上三角(“full”,“upper"和"lower”)

col:指定图形展示的颜色,默认以均匀的颜色展示

bg:指定图的背景色

title:为图形添加标题

is.corr:是否为相关系数绘图,默认为TRUE,同样也可以实现非相关系数的可视化,只需使该参数设为FALSE即可

diag:是否展示对角线上的结果,默认为TRUE

outline:是否绘制圆形、方形或椭圆形的轮廓,默认为FALSE

mar:具体设置图形的四边间距

addgrid.col:当选择的方法为颜色或阴影时,默认的网格线颜色为白色,否则为灰色

addCoef.col:为相关系数添加颜色,默认不添加相关系数,只有方法为number时,该参数才起作用

addCoefasPercent:为节省绘图空间,是否将相关系数转换为百分比格式,默认为FALSE

order:指定相关系数排序的方法,可以是原始顺序(original)、特征向量角序(AOE)、第一主成分顺序(FPC)、层次聚类顺序(hclust)和字母顺序,一般”AOE”排序结果都比”FPC”要好

hclust.method:当order为hclust时,该参数可以是层次聚类中ward法、最大距离法等7种之一

addrect:当order为hclust时,可以为添加相关系数图添加矩形框,默认不添加框,如果想添加框时,只需为该参数指定一个整数即可

rect.col:指定矩形框的颜色

rect.lwd:指定矩形框的线宽

tl.pos:指定文本标签(变量名称)的位置,当type=full时,默认标签位置在左边和顶部(lt),当type=lower时,默认标签在左边和对角线(ld),当type=upper时,默认标签在顶部和对角线,d表示对角线,n表示不添加文本标签

tl.cex:指定文本标签的大小

tl.col:指定文本标签的颜色

cl.pos:图例(颜色)位置,当type=upper或full时,图例在右表®,当type=lower时,图例在底部,不需要图例时,只需指定该参数为n

addshade:只有当method=shade时,该参数才有用,参数值可以是negtive/positive和all,分表表示对负相关系数、正相关系数和所有相关系数添加阴影。注意:正相关系数的阴影是45度,负相关系数的阴影是135度

shade.lwd:指定阴影的线宽

shade.col:指定阴影线的颜色

实践

实践数据还是使用上一篇中画相关系数的数据。
(1)准备数据集
首先还是加载数据集:all_data
all_data为数据框格式,共包含9696996行,5列(5个样本),如下图所示。
在这里插入图片描述
为每列指定列名

colnames(all_data) <- c( 's1', 's2','s3 ', 's4','s5') 

(2)计算样本间的相关系数

matrix <- cor (all_data[1:5])

这里我想补充一下cor()函数的用法(这里主要参考了第二篇参考资料)。在R语言中,通常使用cor函数进行相关系数分析,可以分别指定向量,也可以指定给cor函数一个数据框。
基本语法

cor(x,y=NULL,use="everything",method= c("pearson","kendall","spearman"))

use 用来指定处理缺失值的方式,可以为"everything", “all.obs”, “complete.obs”, “na.or.complete”, 或者 “pairwise.complete.obs”.
method 是可选的三种相关系数计算方法,默认情况下使用的是pearson相关系数

这三种计算相关系数简介:
pearson相关系数:即皮尔逊相关系数,用于横向两个连续性随机变量间的相关系数。

spearman相关系数:即斯皮尔曼相关系数,用于衡量分类定序变量间的相关程度。

kendall相关系数:即肯德尔相关系数,也是一种秩相关系数,不过它所计算的对象是分类变量。

(3)corrplot包对相关系数输出的结果进行可视化

#直接画图,不设置其它参数
corrplot(corr=matrix)

在这里插入图片描述
控制单元格形状和内容

# 换用不同method,分别显示数字和颜色(method can be "circle", "square", "ellipse", "number", "shade", "color", "pie")
# method 默认为“circle”
corrplot(M, method = "number") 
corrplot(matrix, method = "color")  

在这里插入图片描述
在这里插入图片描述
控制单元格展示的方式以及混合展示

#指定展示的方式,可以是完全的、下三角或上三角
corrplot(matrix, type = "upper")

在这里插入图片描述

# corrplot.mixed()可以混合可视化样式
#默认上三角为circle,下三角为number,可以修改
corrplot.mixed(matrix)  
corrplot.mixed(matrix, lower = "ellipse", upper = "pie")

在这里插入图片描述

在这里插入图片描述

corrplot.mixed(matrix, lower = "number", upper = "pie", tl.col = "black",lower.col = "black", number.cex = 1)  
#tl.col 修改对角线的颜色,lower.col 修改下三角的颜色,number.cex修改下三角字体大小

在这里插入图片描述

指定order方式

#指定order按hclust聚类方式排序,addrect是添加分组矩形,可自定义分组类
corrplot(matrix,order = "hclust",addrect  = 3)

在这里插入图片描述

#当order = "hclust"时,可使用hclust.method选择层次聚类的方法
#hclust.method可以为“complete”, “ward”, “single”, “average”, “mcquitty”, “median”, “centroid”
corrplot(matrix,order = "hclust",addrect  = 3,hclust.method="ward.D2")

在这里插入图片描述

图例标签控制

#图例标签控制
corrplot(matrix, method="number",order = "AOE", cl.pos = "n", tl.pos = "n") 
#控制对角标签旋转45度
corrplot(matrix, type = "lower", order = "hclust", tl.col = "black", tl.srt = 45)
#修改图例范围
corrplot(matrix,order = "AOE", cl.lim = c(0, 1))

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

#改变单元格颜色以及背景颜色bg
col3 <- colorRampPalette(c("red", "white", "blue"))
corrplot(matrix, order = "hclust", addrect = 3, col = col3(100), bg = "lightblue")

在这里插入图片描述

summary

总结一下,corrplot包使用起来非常简单,也有很多参数可以画出各种花哨的图……甚至可以做显著性检验(我的数据结果都很好,也很少,就没有做)和月亮的阴晴圆缺(具体参见参考资料3和官方文档)。
但是,最大的缺点: 没办法同时作层次聚类的树图,考虑到这点,我还是喜欢pheatmap多一点,虽然它不是专门画相关系数的图。
最后,用这个包画一个生物相关论文中常见的相关系数图:

corrplot(corr=matrix,method = "color",order = "hclust",tl.col="black",addrect=4,addCoef.col = "grey")

在这里插入图片描述
 

参考资料

R语言相关系数可视化之corrplot包
左手用R右手Python系列11——相关性分析
R画月亮阴晴圆缺:corrplot绘图相关系数矩阵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章