乐于分享
好东西不私藏

「R绘图模板」Mantel test 进阶玩法:多组学整合分析可视化(附R代码)!!!

「R绘图模板」Mantel test 进阶玩法:多组学整合分析可视化(附R代码)!!!
关注我们
微信号:zhishanwang_WeChat
需要模板的友友可在公众号后台功能栏查看具体获取方式,或直接添加小编微信咨询哈!

为了避免各位错过最新的推文教程,强烈建议大家将“科研后花园”设置为“星标”!

图书推荐
小编有话说
图片文献来源

在微生物组、转录组、代谢组等多组学研究中,我们常常需要回答:环境因子如何影响不同层面的群落结构? 传统的 Mantel 检验只能输出一个相关系数和 p 值,无法直观展示多个数据矩阵与环境因子的关联模式。

今天,我们介绍一种进阶可视化方法:将环境因子间的相关性热图与多个 OTU 表(或各组学数据)的 Mantel 检验结果整合到一张图中,通过连线颜色、粗细直观表达关联强度与显著性。

全部代码基于 ggClusterNet 包及对其内部函数的微改动,可复现,你只需替换自己的数据即可。

一、什么是 Mantel test?为什么要进行多组学整合?

Mantel test 大白话

计算两个距离矩阵之间的相关性(例如环境差异矩阵 vs 群落差异矩阵)。如果显著相关,则说明环境差异与群落差异具有一致性,环境因子可能驱动群落变化。

多组学整合分析

我们可能同时拥有细菌群落、真菌群落、代谢组数据等多个数据集。我们想知道:环境因子与 每一个数据集之间是否显著相关?关联强度有多大?通过一张组合图,我们可以同时展示:

  • 环境因子之间的相关结构(热图)

  • 环境因子与各个数据集的 Mantel 检验结果(连线)

二、数据准备与自定义函数

2.1 使用 ggClusterNet 示例数据

library(tidyverse)library(ggClusterNet)library(phyloseq)data(ps)       # phyloseq 对象,包含 OTU 表和分类信息data(env1)     # 环境因子数据框(行为样本,列为环境变量)# 提取 OTU 表并转置(行为样本,列为 OTU)otu1 <- as.data.frame(t(vegan_otu(ps)))# 模拟多个数据集(实际可替换为真菌、代谢物等)otu2 <- otu1otu3 <- otu1# 组织为列表tabOTU <- list(GroupA = otu1, GroupB = otu2, GroupC = otu3)

注意:实际应用中,otu1otu2otu3 可以替换为不同组学数据(如细菌、真菌、功能基因)。

2.2 自定义函数加载

由于 ggClusterNet 包自带的函数中并没有修改颜色等参数,为了更贴合文献中的图形,小编对原包中的Miccorplot3cor_linkjmatcorplotj三个函数进行了微调,  以便控制更多细节(感兴趣的小伙伴可以自行探索修改哈)。你需要将这些 R 脚本放在工作目录下,并通过 source() 加载:

source("Miccorplot3.R")source("cor_linkj.R")source("matcorplotj.R")

如果您没有这些文件,可以在文章末尾查看单篇代码的具体获取方式

2.3 定义连线布局(matrix.line)

matrix.line <- list(x = names(tabOTU)[1:2],   # 将 GroupA 和 GroupB 的连线放在图形右侧(x方向)  z = names(tabOTU)[3]      # 将 GroupC 的连线放在底部(z方向))

通过 matrix.line 你可以自定义每个 OTU 表(群落)的 Mantel 连线在热图中的位置,避免多组连线过度重叠。

三、绘图步骤详解

3.1 绘制环境因子相关性热图

Miccorplot3(  data       = env1,  method.cor = "spearman",   # 使用 Spearman 秩相关  cor.p      = 0.05,x          = TRUE,y          = TRUE,  diag       = FALSE,  lacx       = "right",      # X轴标签放在右侧  lacy       = "top",        # Y轴标签放在顶部  sig        = FALSE,        # 不显示显著性星号  siglabel   = FALSE,  shownum    = FALSE,        # 不显示相关系数数值  numpoint   = 21,  numsymbol  = NULL)

这一步只是基于于 ggClusterNet 包中的Miccorplot3函数进行热图绘制,不显示数字和星号,使图形更简洁。

3.2 整合 Mantel 连线(核心步骤)

matcorplotj(  env.dat     = env1,  tabOTU      = tabOTU,  corva       = -0.08,  zoom        = 3  diag        = FALSE,  range       = 0.01,  numpoint    = 21,  numpoint2   = 21,  sig         = FALSE,  siglabel    = FALSE,  shownum     = FALSE,  curvature   = 0.2,  numsymbol   = NULL,  lacx        = "right",  lacy        = "top",  p.thur      = 0.05,  onlysig     = TRUE,  method.cor  = "spearman",  method      = "metal",  distance    = "bray",  cor.p       = 0.05,x           = TRUE,y           = TRUE,  matrix.line = matrix.line)

关键参数解释

  • corva / curvature:控制连线的弯曲方向和程度,可微调避免重叠。

  • zoom:值越大,连线端点离热图越远,为标签留出空间。

  • method = "metal":内部调用的 Mantel 检验函数,实际应为 "mantel",但函数作者自定义了参数名,不影响使用。

四、结果解读与图形美化

4.1 图形构成

  • 左下区域:环境因子之间的相关性热图(红色正相关,蓝色负相关)。

  • 右侧/底部连线:每条曲线代表一个 OTU 表(群落数据)与环境因子的 Mantel 检验结果。

    • 线颜色:红色表示正相关(环境差异与群落差异方向一致),蓝色表示负相关。

    • 线粗细:反映 Mantel r 值的大小(r 绝对值越大,线越粗)。

4.2 如何让图形更美观?

  • 调整连线粗细范围:若连线太粗,可在 cor_linkj.R 中修改 scale_size()。或者将range数值改小一点

  • 调整颜色方案:小编后面提供了几套颜色主题(Miccorplot3_2.R

  • _3.R_4.R),可通过修改 source() 的文件名来切换,亦可自己修改原函数中的颜色方案。
  • 后期修图:导出的 PDF 可在 Adobe Illustrator 或 Photoshop 中进一步调整标签位置、字体等。

五、拓展:使用不同配色方案

# 配色方案一source("Miccorplot3_2.R")matcorplotj(...)   # 参数同上# 配色方案二source("Miccorplot3_3.R")matcorplotj(...)# 配色方案三source("Miccorplot3_4.R")matcorplotj(...)

通过更换不同版本的 Miccorplot3.R 文件,可以快速改变热图的颜色渐变,适应不同期刊的审美要求。

六、常见问题与注意事项

问题
解决方法
连线不显示
确认 matrix.line 中的名称与 tabOTU 列表名称完全一致
连线曲率过大导致混乱
减小 curvature 和 corva 绝对值(如改为 0.1)
样本数量不一致导致 Mantel 检验失败
确保 env1 和所有 tabOTU 中的 OTU 表具有相同的行名(样本名)
只想显示特定群落
修改 matrix.line,只包含需要的群落名称

参考文献:

[1] Chang L , Ju T , Liang K ,et al.Biochar-influenced solubilization and mineralization mechanisms of phosphorus in saline-sodic soils[J].Soil Biology and Biochemistry, 2025, 209.DOI:10.1016/j.soilbio.2025.109890.

[2] Wen T ,Liu, Yong‐Xin, Liu L ,et al.ggClusterNet 2: An R package for microbial co‐occurrence networks and associated indicator correlation patterns[J].iMeta, 2025, 4(3).DOI:10.1002/imt2.70041.

希望这篇教程对大家的科研绘图有所帮助!欢迎关注科研后花园公众号,获取更多科研绘图技巧。

公众号:科研后花园原创教程,转载请注明出处

PS: 以上内容是小编个人学习代码笔记分享,仅供参考学习,欢迎大家一起交流学习。

R绘图模板合集(包括附带注释的源码、测试数据及绘制效果图)可在公众号后台菜单栏→R代码查看具体获取方式!
绘图模板合集效果图展示:

往期推荐

R可视化——一文带你打通ggplot2个性化绘制箱线图(更新版)!!!

R可视化——一文带你打通ggplot2个性化绘制散点图!!!

R可视化——一文带你打通ggplot2个性化绘制柱状图(条形图)!!!

「R绘图模板」正三角相关性热图+聚类树:一张图看懂变量间的“朋友圈”!!!

「R绘图模板」存在-缺失热图:一张图看懂数据的“有”和“无”!!!

「R绘图模板」中性群落模型:解密微生物群落构建的“随机密码”!!!

「R绘图模板」RDA&dbRDA&CCA可视化!!!

「R绘图模板」Communications Earth & Environment | 组合图系列—曼哈顿图+Venn图展示富集OTU情况!!!

「R绘图模板」Science Advances | 组合图-并列柱状图+饼图+折线图!!!

「R绘图模板」J. Agric. Food Chem. | 分面组合图-字母标记显著性柱状图+传统显著性标记箱线图!!!

「R绘图模板」主成分分析(PCA)+各类型边缘图!!!

「R绘图模板」Field Crops Res. | 组合图系列—三元图+条形图展示微生物丰度信息!!!

「R绘图模板」Nat. Commun | 复杂tree注释—分支颜色+多层离散热图+分组条形图!!!

「R绘图模板」多色系热图+分组气泡图!!!

「R绘图模板」配对连线图+均值点及连线+显著性+嵌套分组!!!

「R绘图模板」微生物物种组成可视化组合图—tree+环形热图+柱状堆积图!!!

「R绘图模板」桑基图+微生物物种组成!!!

「R绘图模板」mantel test—基于linkET包(ggcor平替包)!!!

「R绘图模板」基因表达可视化—热图+聚类+上下调基因个数统计!!!

「R绘图模板」并列箱线图+多维度显著性标注!!!

「R绘图模板」嵌套图-箱线图+条形图!!!

「R绘图模板」离散环形散点+数据标签+分组占比+分面!!!

「R绘图模板」多分组并列柱状堆积图+误差线+组内及组间显著性字母标记!!!

「R绘图模板」小提琴图+嵌套箱线图+均值点及标签+显著性+分组背景色!!!

「R绘图模板」相关性散点矩阵图!!!

「R绘图模板」双y轴+并列条形图+折线图+显著性字母标记!!!

「R绘图模板」蝶形并列柱状图+不同组数+标签+误差棒!!!

「R绘图模板」跟着New Phytologist学绘图—共发生网络图的绘制!!!!!!

「R绘图模板」气泡图+热图+相关性r值与p值的可视化!!!

「R绘图模板」并列柱状图+组内差异字母标记+组间差异字母标记!!!

「R绘图模板」并列箱线图+散点+气泡图+分组+显著性!!!

「R绘图模板」环形多组火山图+标签!!!

「R绘图模板」组合图系列—相对丰度柱状堆积图+单组柱状图+显著性!!!

「R绘图模板」世界地图+采样点标记+柱状堆积图!!!

「R绘图模板」环形无分组排序柱状堆积图!!!

「R绘图模板」mantel test分析拓展——多样式多形式展示数据!!!

「R绘图模板」环形分组散点图+误差棒+分组标签+灰白间隔背景+辅助线!!!

「R绘图模板」箱线图+散点+配对连线+显著性+分面!!!

「R绘图模板」层级网络图的绘制!!!

「R绘图模板」世界地图+采样点标记+分组条形图+柱状图嵌套!!!

「R绘图模板」并列柱状图+不同组字母标记+组间显著性标记!!!

「R绘图模板」环状箱线图+分组+显著性+均值标记!!!

「R绘图模板」嵌套柱状图+显著性+字母标记!!!

「R绘图模板」跟着Nature Communications学绘图—世界地图+采样点标记+饼图+柱状图!!!

「R绘图模板」跟着Nature Communications学绘图—并列柱状堆积图+误差线+显著性!!!

R绘图模板——网络图+微生物丰度与基因间的相关性+正负相关(粉丝投稿)!!!