

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





在微生物组、转录组、代谢组等多组学研究中,我们常常需要回答:环境因子如何影响不同层面的群落结构? 传统的 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)
注意:实际应用中,
otu1,otu2,otu3可以替换为不同组学数据(如细菌、真菌、功能基因)。
2.2 自定义函数加载
由于 ggClusterNet 包自带的函数中并没有修改颜色等参数,为了更贴合文献中的图形,小编对原包中的Miccorplot3、cor_linkj、matcorplotj三个函数进行了微调, 以便控制更多细节(感兴趣的小伙伴可以自行探索修改哈)。你需要将这些 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) | |
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绘图模板」中性群落模型:解密微生物群落构建的“随机密码”!!!

「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绘图模板」配对连线图+均值点及连线+显著性+嵌套分组!!!































夜雨聆风