绘制mantel test图新包linkET

安装和更新

近期断断续续对linkET做了一些更新,主体是从方便用户使用,增强灵活性的角度出发的,至于我想在新版本中添加的功能,暂时还未完成,而且预计新功能完成可能得到端午节前后,所以这个版本(0.0.3)是未来一段时间比较稳定的版本,若是想尝新,不妨更新一下试试。

## install.packages("devtools")
devtools::install_github("Hy4m/linkET", force = TRUE)
library(linkET)

correlate()函数

之前的版本(包括最早的ggcor),correlate()函数都仅仅是封装cor()cor.test()函数,来作为默认的相关系数矩阵计算的函数,然后提供了统一的接口来把WGCNA等其他包计算的结果导入到linkET中。这一次更新,我尝试把其他包的函数(如psych::corr.test())作为计算引擎,完整的封装进correlate()函数,这样用户就不用去深究各种不同的包的函数差异。下面的例子给了一些示例,可以尝试运行查看结果。

## 默认计算方式,等价于上一个版本的correlate()
correlate(mtcars)
## 使用psych包作为计算引擎
correlate(mtcars, engine = "psych")


## 使用Hmisc包作为计算引擎
correlate(mtcars, engine = "Hmisc")


## 使用picante包作为计算引擎
correlate(mtcars, engine = "picante")


## 使用WGCNA包作为计算引擎
correlate(mtcars, engine = "WGCNA")

当然,correlate()函数还增加了一个group参数,这个参数可以用来指定原始数据的分组信息,例如比如著名的iris数据集中,若我们想根据物种la分别计算相关系数矩阵,我们就可以把group参数设置为Species这个向量。

# head(iris)
correlate(iris[-5], group = iris$Species)

27d030611c57facd548ac69c20349ca9.png

直接输出分组计算的相关系数矩阵的结果,只能看到一点描述性信息,建议使用下面的代码把图画出来:

correlate(iris[-5], group = iris$Species) %>% 
  qcorrplot() + geom_square()

4e5cea07369a6a60fe7438825e8487ef.png

改变默认样式

linkET的开发过程中,我一直保持克制,希望能最大程度保持原汁原味的ggplot2的感觉,但是经不住问,我还是提供了一个set_corrplot_style()函数,每次打开R会话框后运行下这个函数,就能保证之后的所有的qcorrplot()函数画的图都改成了你想要的样式。

set_corrplot_style()
qcorrplot(mtcars) + geom_square()

11c0dc945a814623f9c22b0b59438d46.png

也可以使用你自己的调色板,比如改成红白蓝的配色:

set_corrplot_style(colours = c("red", "white", "blue"))
qcorrplot(mtcars) + geom_square()

7e4bb4d2837115f612e9c08a3d8eca79.png

最后,要是你嫌弃默认使用的scale_fill_gradientn()函数不能满足你的需求,你完全可以提供的scale函数,比如:

set_corrplot_style(scale = ggplot2::scale_fill_viridis_c())
qcorrplot(mtcars) + geom_square()

017b949560027e3e6995540d6da5bcce.png

用完了记得还原一下,不然之后的图还会按照你设置的样式画图:

set_default_style()

更丝滑的geom_couple()函数

我们先看看:

library(dplyr)
library(ggplot2)
data("varechem", package = "vegan")
data("varespec", package = "vegan")


mantel <- mantel_test(varespec, varechem,
                      spec_select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37,
                                         Spec04 = 38:44)) %>% 
  mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
                  labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
         pd = cut(p, breaks = c(-Inf, 0.01, 0.05, Inf),
                  labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))


## 现学现用
set_corrplot_style()
qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature()) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = color_pal(3)) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

36782cb179e672cc1a5c1481014762fc.png

现在想把Spec的几个点的位置微调一下,在之前的三期文章中我提到了可以使用aes(x = .x + 1)之类的方式来调整,但是这种方法每次都是所有的点做相同的调整,在这个版本中我新增了offset_xoffset_y两个参数,这两个参数能对指定的点做调整,没有指定的保持在原位不动。

qcorrplot(correlate(varechem), type = "lower", diag = FALSE) +
  geom_square() +
  geom_couple(aes(colour = pd, size = rd), 
              data = mantel, 
              curvature = nice_curvature(),
              offset_x = list(Spec02 = 3, Spec03 = 3),
              offset_y = list(Spec01 = 0.5, Spec02 = 1)) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = color_pal(3)) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

4260b6e2694fc0e90a22903fd6e2d586.png

小结

linkET还会继续开发,功能也会越来越完整,希望所有人都能切换到linkET上来,忘了那个ggcor吧。

猜你喜欢

iMeta简介 高引文章 高颜值绘图imageGP 网络分析iNAP
iMeta网页工具 代谢组MetOrigin 美吉云乳酸化预测DeepKla
iMeta综述 肠菌菌群 植物菌群 口腔菌群 蛋白质结构预测

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树 必备技能:提问 搜索  Endnote

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘  

写在后面

为鼓励读者交流快速解决科研困难,我们建立了“宏基因组”讨论群,己有国内外6000+ 科研人员加入。请添加主编微信meta-genomics带你入群,务必备注“姓名-单位-研究方向-职称/年级”。高级职称请注明身份,另有海内外微生物PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

点击阅读原文,跳转最新文章目录阅读

  • 9
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Mantel test是一种用于计算两个相关性矩阵之间相关性的统计检验方法,它用于判断两个矩阵之间的关联是否存在显著性。mantel test python包则是用于在Python编程语言中进行Mantel test的工具包。 mantel test python包通常提供了实现Mantel test所需的函数和方法。使用这个工具包,我们可以将两个相关性矩阵作为输入,并计算它们之间的相关性,并给出相关性的检验结果。根据结果,我们可以判断两个矩阵之间的相关性是否具有统计显著性。 在使用mantel test python包时,通常需要先导入相应的库,例如scipy和numpy。然后,我们可以使用这些库中的函数来计算相关性矩阵,并使用mantel test函数来执行Mantel test。根据具体的使用情况,我们可以指定两个矩阵的类型(如距离矩阵或相关系数矩阵)、相关性的计算方法以及显著性水平。 值得注意的是,mantel test python包不仅仅适用于基础的Mantel test,它还常常提供了其他变种的相关性检验方法,如Partial Mantel test和Pearson Mantel test等。这些方法可以处理更复杂的相关性分析问题,增加了在实际问题中的应用范围。 总结来说,mantel test python包是用于在Python中进行Mantel test的工具包,它提供了计算相关性矩阵并执行相关性检验的函数和方法。使用mantel test python包,我们可以判断两个矩阵之间的相关性是否显著,并进行更复杂的相关性分析。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值