小果带你玩转多变量数据:如何巧用corrplot包解析各变量间的相关性

Hello,各位小伙伴大家好,很开心,小果又如期和大家见面了哦,不知道大家有没有遇到过这样的问题:我们在做实验或数据分析的时候设置了多个变量,突然,灵感迸发,想要看一下是否这几个变量之间也存在什么关系呢?这时大家应该如何处理,要怎么才能谁和谁的关系是正相关,或者哪两个变量之间是负相关呢?今天各位小伙伴可真是看对了,小果告诉大家,在R语言中的确有一个函数能计算各变量之间的相关性系数— cor()

cor()函数可以非常简便的计算出各连续变量之间的相关系数,但当变量非常多时返回的相关系数一定会让各位小伙伴看花了眼。因此我们迫不及待的需要一个能将相关性矩阵可视化的方法,虽然有很多方法能进行相关性矩阵的可视化,且基础绘图也能完成,但在我心目中,最好用的一定还是corrplot包。

撇开它是国产的R包外,本身它的使用就非常简便,并能按照自己的审美对其可视化方法、图形布局、颜色、图例、文本标签等处进行自定义绘制。另外,虽然该包提供了约50个参数,但是常用的也就10个左右,非常适用于刚上手的小伙伴哦!

且corrplot包在生物信息学中的使用频率也很高哦:比如在基因表达和蛋白质组学的研究中,corrplot包既能帮助大家寻找到有相同表达模式的基因,助力我们对研究对象的某种分子机制的解析;也能帮助各位小伙伴可视化蛋白质之间的相互关系,帮助分析网络的模式和结构,以此来简化各位的研究哦。

总的来说,corrplot 包在生物信息学中提供了一个强大而灵活的工具,可以通过直观可视化的方式帮助大家理解生物分子之间的关系,进而从大规模数据中提取有意义的信息。说到大规模数据,不知道大家都用什么软件或者系统进行处理,小果这里呢推荐大家使用Linux系统哦,该系统界面干净,命令简单,有基因组、转录组等测序数据的处理极其友好,如果大家没有的话,可以练习效果进行租赁哦。

那好吧,各位看官,咱们闲话少叙,上干货!

#corrplot的安装与调用

install.packages(‘corrplot’)

library(corrplot)

library(tidyverse)

library(RColorBrewer)

今天我们的测试数据是我们20个样本的7个共同基因的差异倍数

#读入数据

data <- read.table(‘输入数据.txt’)

#对以上数据进行相关性分析

cor <- cor(data)

cor

以上就是data的相关性,大家其实很难快速准确的找到想要信息,因此我们引入可视化工具corrplot。

#简单出图

P1 <- corrplot(cor)

#改变展示形状

P2 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’)

#改变颜色

col <- colorRampPalette(c(“blue”, “red”))(20)

P3 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

col = col, #改变颜色,

# bg = ‘black’ , #改变背景色

title = ‘test for corrplot’,

is.corr = T , #输入是否为相关矩阵,一般都是T

mar = c(5,5,5,5)) #与上下左右的距离

#改变边框颜色并添加相关性系数

P4 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

col = col, #改变颜色,

# bg = ‘black’ , #改变背景色

title = ‘test for corrplot’,

is.corr = T , #输入是否为相关矩阵,一般都是T

#add = T , #可通过改变type合并两种类型的图

diag = F, #是否展示对角线结果

outline = T, #是否加外框线

addgrid.col = ‘black’, #改变外框线的颜色

addCoef.col = ‘grey’, #改变添加数字的颜色

addCoefasPercent = T, #改变填充数据形式,成为百分比形式

mar = c(5,5,5,5), #与上下左右的距离

#对图形进行排序”original”, “AOE”, “FPC”, “hclust”, “alphabet”

order = c(‘AOE’),

#层次聚类的方法”complete”, “ward”, “ward.D”, “ward.D2”, “single”, “average”,”mcquitty”, “median”, “centroid”

hclust.method = c(‘median’))

#改变行列名的表现方式,以更好的拼图

P5 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

col = col, #改变颜色,

# bg = ‘black’ , #改变背景色

title = ‘test for corrplot’,

is.corr = T , #输入是否为相关矩阵,一般都是T

#add = T , #可通过改变type合并两种类型的图

diag = F, #是否展示对角线结果

outline = T, #是否加外框线

addgrid.col = ‘black’, #改变外框线的颜色

addCoef.col = ‘grey’, #改变添加数字的颜色

addCoefasPercent = T, #改变填充数据形式,成为百分比形式

mar = c(5,5,5,5), #与上下左右的距离

#对图形进行排序”original”, “AOE”, “FPC”, “hclust”, “alphabet”

order = c(‘hclust’),

#层次聚类的方法”complete”, “ward”, “ward.D”, “ward.D2”, “single”, “average”,”mcquitty”, “median”, “centroid”

hclust.method = c(‘median’),

#改变文本标签的位置’lt’, ‘ld’, ‘td’, ‘d’ or ‘n’. ‘lt’

tl.pos = ‘dt’, #可用于两个图拼接时使用

tl.cex = 0.8,tl.col = ‘black’ #文本大小和颜色

)

#对图例进行调整

P6 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

cl.pos = ‘r’, #’r”b”n’的图例位置

cl.cex = 0.5 , cl.ratio = 0.3, #图例大小和宽度

cl.length = 7 , #标签个数

cl.align.text = ‘r’, #标签文本对齐方式l,r,c三种

cl.offset = 0.1 #标签与图例的偏移量

)

#对先的位置进行调整

P7 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘shade’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

addshade = ‘positive’ #在shade下有用’negative’, ‘positive’ or ‘all

)

#对数字进行调整

P8 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘number’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

number.cex = 2, #数字大小

number.font = 1, #字体形式

number.digits = 2) #小数的保留结果

#拼图

P9 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘number’,

#展示类型”full”, “lower”, “upper”

type = ‘lower’,

col = col, #改变颜色

number.cex = 1, #数字大小

number.font = 1, #字体形式

#add= T, #添加另一个图

#改变文本标签的位置’lt’, ‘ld’, ‘td’, ‘d’ or ‘n’. ‘lt’

tl.pos = ‘d’,

tl.col = ‘black’,

number.digits = 2 #小数的保留结果

)

P9 <- corrplot(cor, #简单绘图

#改变形式”circle”, “square”, “ellipse”, “number”, “shade”, “color”, “pie”

method = ‘color’,

#展示类型”full”, “lower”, “upper”

type = ‘upper’,

col = col, #改变颜色,

# bg = ‘black’ , #改变背景色

title = ‘test for corrplot’,

is.corr = T , #输入是否为相关矩阵,一般都是T

add = T , #可通过改变type合并两种类型的图

diag = F, #是否展示对角线结果

#改变文本标签的位置’lt’, ‘ld’, ‘td’, ‘d’ or ‘n’. ‘lt’

tl.pos = ‘d’, #可用于两个图拼接时使用

tl.cex = 0.8,tl.col = ‘black’, #文本大小和颜色

cl.pos = ‘n’

)

哎呀,这就是今天小果跟大家分享的全部内容了啊,记住哦,在之后拼图的过程之中一定要进行两次绘制哈,要不然出不来你心目中的图形的!!!其实在对以上图形进行解读的话也是非常简单的啊,下半区的数字代表的是相关性的大小,而相关性的颜色与数字的对应关系可以参照最下面的图例:红色为正相关,“1”也为正相关;蓝色和“-1”则为负相关。相信大家这么聪明,肯定已经是清晰地了解正相关和负相关所代表的意义吧:即当两个自变量是正相关时,其中一个变量会随另一个变量的变化而正向变化;而当两个自变量是正相关时,其中一个变量会随另一个变量的变化而相反变化,是不是很简单呢!

那在我们这个事例中如何正确解读上图的生物学意义呢?

假设以上样本是实验组与转录组的差异表达基因中显著差异的实验组中的7个基因,那么随着相对于对照组的实验条件的改变,使得gene3、gene4、gene5和gene6有在10个样本中着相同的表达模式,即一同上调或下调,说明他们可能致力于同意通路或同一生物学作用哦!

当然,对于相关性热图绘制的R包远不止于此,还有其余多种R包能完成这项工作,如果大家感兴趣的话,可以关注小果往期创作的内容或点击下方链接进入我们的云生信平台查看哦!

另外如果在使用过程中遇到了任何问题,都可以随时来找小果讨论哦,赶快加入我们吧!!可能这个颜色不是很符合大家的预期,所以各位小伙伴们可以自定义颜色哦,如果大家觉得配置颜色好难啊,也可以加入我们的云生信平台,里面有成熟的代码,大家可以直接将数据上传到服务器中就可以随意生成想要的图片了,并且也支持各种颜色的定制哦,快来加入我们吧!!

http://www.biocloudservice.com/home.html