lyao222lll的个人博客分享 http://blog.sciencenet.cn/u/lyao222lll

博文

R语言中相关图的绘制方法简介

已有 8977 次阅读 2019-4-14 11:22 |个人分类:R作图|系统分类:科研笔记| _R语言, _统计图表

R语言中相关图的绘制方法简介

 

前文“R语言运行相关性分析”中,对在R中如何运行相关性分析做了简介。若想对相关系数的计算方法以及对相关系数的显著性检验方法等作初步了解,可点击查看。

在通过计算并筛选得到了所需的相关性分析结果后(通常情况下,我们会得到一个矩阵,记录了两两变量间的相关系数),若还考虑对相关系数矩阵进行可视化展示,本文的内容提供了一些相关图的作图示例以供参考。

 

示例数据、R脚本等,已上传至百度盘(提取码tsc7):

https://pan.baidu.com/s/11clfCz0fbQAlf4-RBOYy1g

 


示例文件简要


示例文件中,“pearson1.txt”和“pearson2.txt”分别为来自两组不同数据计算得到的变量间Pearson相关系数矩阵。

其中,“pearson1.txt”为对称矩阵样式。记录了某16S测序数据中主要的细菌门类群之间的Pearson相关系数。

1.png

pearson2.txt”为非对称矩阵样式。记录了16S测序数据中主要的细菌门类群与其所处环境变量间的的Pearson相关系数。

2.png

 

示例文件“top10_phylum.csv”为一个细菌门水平的物种丰度表。每一列为一种细菌门,每一行为一个样本。该丰度表与上述已经计算好的相关系数矩阵无关联。

3.png

 

接下来,使用上述3个示例文件简单展示R中几种可用于绘制相关图的命令(R中绘制相关图的命令很多,以下简介的作图命令通常足以满足需求了,更多的方法还请大家自行摸索了)。对于2个现有的相关系数矩阵(变量间相关系数计算方式可参考前文前文“R语言运行相关性分析”),我们直接读取它们并用于作图,主要以相关系数热图为主;对于1个原始的物种丰度表,在某些环节中将其读入,单独用于绘制可展示原始变量数值的相关系数散点图。

首先,将3个数据读入R中,后续作图时直接读取。

#读取相关性数据(已经计算好的相关性结果数据)
pearson1 <- as.matrix(read.table('pearson1.txt', sep = '\t', row.names = 1, header = TRUE))
pearson2 <- as.matrix(read.table('pearson2.txt', sep = '\t', row.names = 1, header = TRUE))
 
#原始物种丰度数据
top10_phylum <- read.csv('top10_phylum.csv', row.names = 1)

 


corrplot包的corrplot()命令绘制相关图


首先简介corrplot(),该命令功能强大,使用方便,作图结果也很美观实用。这也是我平时最习惯用的作图命令。

以下仅实用示例数据做简单展示,对于该命令的详细说明,可在加载了corrplot包后使用? corrplot()查看R文档。

 

library(corrplot)
 
#默认样式
corrplot(pearson1)

4.png

 

#method 参数,调整相关系数的展示方式,例如
corrplot(pearson1, method = 'color')
corrplot(pearson1, method = 'number')
corrplot(pearson1, method = 'pie')

5.png6.png7.png

 

#参数 diag = FALSE,可隐藏对角线中的数值
corrplot(pearson1, method = 'square', diag = FALSE)

8.png


#tl.pos、tl.cex、tl.col、tl.offset、tl.srt 等参数,调整变量标签字体属性
#例如调整大小及颜色
corrplot(pearson1, method = 'pie', diag = FALSE, tl.cex = 0.8, tl.col = 'black')

9.png

 

#cl.pos、cl.lim、cl.length、cl.cex、cl.ratio、cl.align.text、cl.offset 等参数,调整相关性标尺属性
#例如将标尺调整至图的下方,并调整刻度值的间隔
corrplot(pearson1, method = 'pie', diag = FALSE, cl.pos = 'b', cl.length = 9)

10.png

 

#number.cex、number.font、number.digits 等参数,调整相关性数字属性(当 method = 'number' 时可调整)
#例如调整展示数值的尺寸
corrplot(pearson1, method = 'number', diag = FALSE, number.cex = 0.8)

11.png

 

#order、hclust.method(当 order = 'hclust' 时可调整)等参数,可根据相关性强度对变量的展示顺序重新排列
#例如将变量根据 ward 最小方差聚类排序,并将变量聚为 3 类
corrplot(pearson1, method = 'color', order = 'hclust', hclust.method = 'ward.D', addrect = 3)

15.png

 

#type 可设置相关图的展示形式,默认展示全部
#例如仅展示对称矩阵的上三角部分
corrplot(pearson1, method = 'color', type = 'upper')

16.png

 

#添加 add = TRUE 时(默认 FALSE),可将新图叠加在原图上方
#例如一个组合样式的相关图
corrplot(pearson1, method = 'number', number.cex = 0.8, diag = FALSE, tl.cex = 0.8)
corrplot(pearson1, add = TRUE, type = 'upper', method = 'pie', diag = FALSE, tl.pos = 'n', cl.pos = 'n')

17.png

 

#col 属性自定义相关性的颜色设置,bg 可设置背景色
#例如自定义相关系数的颜色范围
col1 <- colorRampPalette(c('red3', 'orange', 'white', 'blue', 'blue4'))
corrplot(pearson1, method = 'number', diag = FALSE, col = col1(21), tl.cex = 0.8)
corrplot(pearson1, add = TRUE, type = 'upper', method = 'circle', diag = FALSE, col = col1(21), tl.pos = 'n', cl.pos = 'n')

18.png

 

#当 method 不为 “number”时,可使用 addgrid.col 设置颜色显示相关系数,同时配合 number.font 等参数使用
#例如当 method = 'color' 时,在图中显示相关系数数值,并 number.cex 调整字体大小
corrplot(pearson2, method = 'color', addCoef.col = 'black', number.cex = 0.8)

19.png

 

#当存在显著性检验结果时,可使用 sig.level、insig 等参数根据显著性 p 值屏蔽不显著的相关系数
#通常与 pch、pch.col、pch.cex 等参数来使用,这些参数设置屏蔽区的展示方式
#此处借用 psych 包中的 corr.test(),基于原始数据计算相关性,并执行显著性检验,之后根据结果绘制相关图
library(psych)
 
top10_phylum <- read.csv('top10_phylum.csv', row.names = 1)
spearman1 <- corr.test(top10_phylum, method = 'spearman')
 
corrplot(spearman1$r, method = 'square', type = 'lower', p.mat = spearman1$p, sig.level = 0.05, insig = 'blank', addCoef.col = 'black', diag = FALSE, number.cex = 0.8, tl.cex = 0.8)

20.png

 


corrgram包的corrgram()命令绘制相关图


然后简介corrgram(),该命令同样是一个绘制相关图的很好用的命令。

同样地,以下只做简单展示,对于该命令的详细说明,可在加载了corrgram包后使用?corrgram()查看R文档。

 

library(corrgram)
 
#默认样式
corrgram(pearson1)

1.png

 

#order = TRUE 时,可根据相关性强度对变量的展示顺序重新排列
corrgram(pearson1, order = TRUE)

2.png

 

#lower.panel、upper.panel 等参数可以设置相关系数的展示方式
#例如设置下三角区域填充图样式,上三角区域饼图样式
corrgram(pearson1, lower.panel = panel.fill, upper.panel = panel.pie)

3.png

 

#text.panel、label.pos 、label.srt、cex.labels、font.labels 等参数可用于调整面板的外观显示样式
#例如调整变量标签的字体大小
corrgram(pearson1, lower.panel = panel.shade, upper.panel = NULL, cex.labels = 1)

4.png

 

#col.regions 可用于自定义颜色范围,例如
col1 <- colorRampPalette(c('red3', 'orange', 'white', 'blue', 'blue4'))
corrgram(pearson1, lower.panel = panel.shade, upper.panel = panel.pie, col.regions = col1)

5.png

 

#可以直接读取原始数据,通过指定相关系数类型,作图展示
#相较于直接读取相关矩阵,此时可以添加散点图或拟合线图类型展示变量间的相关性
top10_phylum <- read.csv('top10_phylum.csv', row.names = 1)
corrgram(top10_phylum, cor.method = 'pearson', lower.panel = panel.pts, upper.panel = panel.ellipse)

6.png

 


pairs()命令绘制相关散点图


上述提到了基于导入原始数据计算变量间相关性的同时绘制相关散点图。这里再简单提一个命令,pairs()R启动时默认加载。

该命令同样可通过读取原始数据中的数值,将变量间的相关性以散点图的类型表示出。使用?pairs()查看命令帮助,以下展示一示例。

 

#pairs(),绘制变量间两两相关性散点图矩阵
top10_phylum <- as.matrix(read.csv('top10_phylum.csv', row.names = 1))
 
panel.hist <- function(x, ...) {
    usr <- par('usr'); on.exit(par(usr))
    par(usr = c(usr[1:2], 0, 1.5) )
    h <- hist(x, plot = FALSE)
    breaks <- h$breaks; nB <- length(breaks)
    y <- h$counts; y <- y/max(y)
    rect(breaks[-nB], 0, breaks[-1], y, col = 'cyan', ...)
}
 
pairs(top10_phylum, panel = panel.smooth, diag.panel = panel.hist)

1.png

 


GGally包的ggcorr()命令绘制相关图


GGally包的ggcorr()命令绘制的相关图同样美观实用,该包在ggplot2的基础上构建,可以视作ggplot2在表示变量间相关矩阵方面的扩展。

同上文,以下只做简单展示,对于该命令的详细说明,可在加载了GGally包后使用?ggcorr()查看R文档。

 

library(GGally)
 
#默认样式
ggcorr(pearson1)

1.png

 

#label = TRUE 时,在图中展示相关系数数值,此时可使用 label_alpha、label_color、label_round、label_size 等参数设置字体属性
ggcorr(pearson1, label = TRUE, label_alpha = TRUE)

2.png

 

#low、mid、high 等参数可自定义颜色范围,例如
ggcorr(pearson1, low = 'red', mid = 'white', high = 'blue')

3.png

 

#读取原始数据,指定所需计算的相关系数类型,自定义作图样式
top10_phylum <- read.csv('top10_phylum.csv', row.names = 1)
 
ggcorr(
    top10_phylum, 
    method = c('pairwise', 'pearson'), 
    name = expression(rho),
    geom = 'circle',
    max_size = 15,
    min_size = 5,
    size = 3,
    hjust = 0.75,
    nbreaks = 6,
    palette = 'PuOr' )

4.png

 

#ggpairs() 同样具有绘制变量间两两相关性散点图矩阵的功能,作为 ggplot2 的扩展,作图风格与 ggplot2 分面图相似
#以下展示部分数据的相关散点图矩阵
top10_phylum <- read.csv('top10_phylum.csv', row.names = 1)
ggpairs(top10_phylum, columns = 1:6)

5.png

 




http://blog.sciencenet.cn/blog-3406804-1173194.html

上一篇:R语言运行相关性分析
下一篇:微生物群落分析中的三元相图在R中的几种绘制方法示例

1 王玲玲

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-8-12 18:34

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部