proc corr data 图_生物信息|用R包轻松绘制一篇Science的组合图。

f23a9b46e62e56f093b78376f57a7af1.png

几个月前,一篇Science文章的一个高颜值高难度组合图表(如下图)引起了众多大佬的兴趣,很多大佬尝试绘制并提供了多种画法,甚至还开发出了专门的R包。

544a93f78d664d69d0b73c98243b8cd2.png
Science, 2015

今天为大家介绍厚缊大神开发的一个R包:ggcor,可以轻松绘制出这种图表。

首先,从github安装ggcor包。建议大家使用原生R软件安装,我自己开始用Rstudio 安装,反复报错,用原生R没问题,很神奇的样子。

# install.packages("devtools")
devtools::install_github("houyunhuang/ggcor")

接下来,读取 otu 丰度表和环境因子表,这里数据仅是测试数据,不具真实性。

spec1<- read.table("otu.txt", sep = "t", header = T, row.names = 1, check.names = F)
env <- read.table("env.txt", sep = "t", header = T, row.names = 1, check.names = F)
spec<-as.data.frame(t(spec1))

加载程序包,可以尝试计算环境因子的相关系数矩阵。

library(vegan)
library(ggcor)
library(dplyr)
corr <- fortify_cor(env, type = "upper", show.diag = TRUE,
                   cor.test = TRUE, cluster.type = "all")
head(corr)

b96cd841a276006d7407092298354a05.png

也可以做不同群落与单个环境因子的mantel test,这里的群落分组方式(spec.select)是我自己随意定的,大家可以根据自己的数据自行命名和设定。

mantel<-fortify_mantel(spec, env, mantel.fun = "mantel.randtest",
              spec.select = list(OTUs = 1:30,
                                 mOTUs = 31:40,
                                 genes = 41:50))

e624409e3ec91230c17d7f42d33589c4.png

不同群落与单个环境因子的偏mantel test。

mantel<-fortify_mantel(spec, env[,1:7],env.ctrl=as.data.frame(env[,8]),
              mantel.fun = "mantel.partial",
              spec.select = list(OTUs = 1:30,
                                 mOTUs = 31:40,
                                 genes = 41:50))

bb6f83f5bb2e838ef391046b25ba2a65.png

对分析结果按r和p值进行重新赋值。

mantel<- fortify_mantel(spec, env,
             spec.select = list(OTUs =1:30,
                       mOTUs =31:40,
                              genes =41:50)) %>%
 mutate(r = cut(r, breaks = c(-Inf, 0.25, 0.5, Inf),
                labels = c("<0.25", "0.25-0.5", ">=0.5"),
                right = FALSE),
        p.value = cut(p.value, breaks = c(-Inf, 0.001, 0.01, 0.05, Inf),
                      labels = c("<0.001", "0.001-0.01", "0.01-0.05", ">=0.05"),
                      right = FALSE))

56559cccc8390a87edd7436594db104a.png

接下来是关键步骤,绘制组合图。

p1<-quickcor(env, type = "upper") + geom_square() +
 add_link(mantel, mapping = aes(colour = p.value, size = r),
          diag.label = TRUE) +
 scale_size_manual(values = c(0.5, 1.5, 3)) +
 add_diaglab(angle = 0) + remove_axis("x")
p1

31c0e28106edde93f83108ba26df3439.png

既然是基于ggplot2,我们可以自定义相关系数矩阵的渐变颜色和连线颜色。

library(ggplot2)
p2<-p1+scale_fill_gradient2(midpoint = 0, low = "#56B4E9", mid = "white",
                            high = "#E69F00", space = "Lab" )
p2

9ad80975fe41ce21511b09e221271f2f.png
#自定义连线颜色;
p3<-p2+scale_color_manual(values=c("#56B4E9", "#E69F00", "#999999"))
p3

最后的绘制效果如下:

9ad80975fe41ce21511b09e221271f2f.png

今天的内容就到这里啦~没看懂得还不赶快收藏起来学习!

参考文献
Sunagawa S, Coelho L P, Chaffron S, et al. Structure and function of the global ocean microbiome[J]. Science, 2015, 348(6237): 1261359.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值