一、R语言下载安装及环境配置
1.1 R语言介绍
R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。(可以画出很多好看且逻辑性极强的图)
1.2 R语言下载
网络搜索“R语言”,点击进入官网
或者直接访问官网链接
R: The R Project for Statistical Computinghttps://www.r-project.org/



1.3 R语言安装




1.4 R语言环境配置
为什么需要配置环境变量
-
确保R命令可以被系统识别:通过配置环境变量,系统可以在任何目录下识别R命令,方便用户随时启动R会话。
-
加载R包和库:配置正确的路径可以确保R能够找到并加载安装的包和库,避免加载失败的问题。




二、RStudio下载安装
RStudio 是一个流行的集成开发环境(IDE),专门用于使用 R 语言进行数据分析、统计建模、可视化和报告。RStudio 提供了一个用户友好的界面,使得编写 R 代码、管理数据和输出结果变得更加容易。
下载网址
RStudio Desktop - Posithttps://posit.co/download/rstudio-desktop


三、Mantel Test 代码运行
Mantel 测试(Mantel Test)是一种统计方法,用于评估两个距离矩阵之间的相关性。这种方法在生态学、遗传学、流行病学和其他领域中广泛应用,用于探究不同变量间的相关性,比如物种之间的相似性与环境变量之间的相似性。
基本思想
Mantel 测试的基本思想是比较两个距离矩阵:一个表示变量间的不相似性(如遗传距离、功能性状距离等),另一个表示观测到的或计算得到的距离(如地理距离、环境变量距离等)。如果两个矩阵之间的相关性显著,则表明变量间存在一定的关联性。
计算步骤
- 计算距离矩阵:首先,需要为两组数据计算距离矩阵。距离矩阵中的每个元素表示相应行和列变量之间的距离或不相似度。
- 应用Mantel 公式:使用公式计算两个矩阵之间的相关性统计量。该统计量反映了两个矩阵间的线性关系。
- 确定显著性:通过比较该统计量与在零假设下的期望分布来确定相关性是否显著。零假设通常表示两个矩阵间没有相关性。
数据集介绍:
- varespec 描述了24块样地中44种植物的丰度信息
- varechem 描述了这24块样地土壤的14个性质参数。
3.1 相关代码
# 更新linkET包
## install.packages("devtools")
# devtools::install_github("Hy4m/linkET", force = TRUE)
# if (!require(package_name)) {
# install.packages("package_name")
# library(package_name)
# }
# 这段代码首先尝试加载包,如果包没有安装,它会自动安装并加载该包
# 导入R包
library(linkET)
library(dplyr)
library(ggplot2)
# 读取R语言自带的两个数据库作为示范案例
data("varechem", package = "vegan")
data("varespec", package = "vegan")
#把varechem拆分为4个类别的矩阵,分别与varespec的每列进行mantel_test
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")))
# 开始画图
qcorrplot(correlate(varechem), # 相关性分析
type = "lower", #热图展示下半部分
diag = FALSE) + #不展示对角线
# 函数在热图上添加方格,每个方格代表一个相关性值
geom_square() +
geom_couple(aes(colour = pd, #网络线的颜色映射mantel_test结果的显著性
size = rd), #网络线的粗细映射mantel_test结果的相关性
data = mantel,
curvature = 0.1) + #基于起点或终点绘制最合适的曲线
# 添加显著性标志
# geom_mark 函数在热图上添加显著性标记。sep = '\n' 指定了显著性标记之间的分隔符,
# size = 3 指定了标记的大小,
# sig_level = c(0.05, 0.01, 0.001) 指定了显著性水平,
# sig_thres = 0.05 指定了显著性阈值。
geom_mark(sep = '\n',size =3, sig_level = c(0.05, 0.01, 0.001),
sig_thres = 0.05,only_mark = TRUE, color = 'black',) + # only_mark: 是否只显示标记而不显示数字。
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11, "PuOr")) + # 设置热图填充颜色
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))+
# theme 函数用于设置图表的主题,包括文本大小、颜色、对齐方式等。
theme(
text = element_text(size = 14, family = "serif"),
plot.title = element_text(size = 14, colour = "pink", hjust = 0.5),
legend.title = element_text(color = "black", size = 14),
legend.text = element_text(color = "black", size = 14),
axis.text.y = element_text(size = 14, color = "black", vjust = 0.5, hjust = 1, angle = 0),
axis.text.x = element_text(size = 14, color = "black", vjust = 0.5, hjust = 0.5, angle = 45)
)
3.2 出图效果
