知识的价值不在于占有,而在于使用。

生信自学网-速科生物-生物信息学数据库挖掘视频教程

当前位置: 主页 > 生信答疑 >

R语言绘制热图corrplot包

时间:2020-08-13 14:23来源:生信自学网 作者:刘鑫 点击:
corrplot包主要针对相关系数输出的结果进行可视化,可以实现选择颜色,文本标签,颜色标签,布局等的操作。

R语言绘制热图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")
 

 


加生信自学网群
责任编辑:伏泽
作者申明:本文版权属于生信自学网(微信号:18520221056)未经授权,一律禁止转载!
BioWolf二维码生成器
------分隔线----------------------------
GEO芯片数据库挖掘生信视频教程
推荐内容
TCGA数据库挖掘文章套路生信视频教程
中药复方网络药理学文章套路生信视频教程