暂时提供脚本,还没实际处理

####示例一,通过桑基图展示变量间的相关性
##计算环境变量间的相关系数
library(Hmisc)

#“env_table.txt” 记录了测量的环境变量数据
env <- read.delim('env_table.txt', row.name = 1, check.names = FALSE)
env <- t(env)

#量纲不同,作个标准化,尽管标准化前后对相关系数的计算无影响
env <- scale(env)

#环境变量间的相关性,以 spearman 秩相关系数为例
env_corr <- rcorr(t(env), type = 'spearman')

r <- env_corr$r  #相关系数 r 值
p <- env_corr$P  #相关系数的显著性 p 值
p <- p.adjust(p, method = 'BH')  #可选 p 值校正,这里使用 BH 法校正 p 值

#仅保留 r>=0.7 且 p.adj<0.01 的相关系数,且去除对角线的自相关
r[abs(r)<0.7 | p>=0.01] <- 0
r[1:6,1:6]
diag(r) <- 0

#输出相关系数矩阵
write.table(r, 'env_corr.matrix.txt', col.names = NA, sep = '\t', quote = FALSE)

#使用 corrplot 包绘制相关图可视化相关矩阵
library(corrplot)
col1 <- colorRampPalette(c('blue4', 'blue', 'white', 'orange', 'red3'))

corrplot(r, method = 'number', col = col1(21), 
    tl.cex = 0.8, number.cex = 0.8, cl.length = 5, diag = FALSE)
corrplot(r, method = 'pie',col = col1(21), 
    tl.pos = 'n', cl.pos = 'n', add = TRUE, type = 'upper', diag = FALSE)

##构建桑基图数据
#读取刚才计算的相关矩阵
r <- read.delim('env_corr.matrix.txt', check.names = FALSE)

#由于这是一个对称矩阵,仅保留下三角数值即可,把上三角的冗余值去除
r[upper.tri(r)] <- 0

#将相关系数矩阵转为“两两关系列表”的样式
env_corr_list <- reshape2::melt(r)
names(env_corr_list) <- c('source', 'target', 'spearman')
env_corr_list$source <- as.character(env_corr_list$source)
env_corr_list$target <- as.character(env_corr_list$target)

#取相关系数的绝对值赋值新列作为相关的强度,并取相关系数的符号赋值新列作为相关的方向
#以及去除 0 值
env_corr_list$weight <- abs(env_corr_list$spearman)
env_corr_list[which(env_corr_list$spearman>0),'direction'] <- '1'
env_corr_list[which(env_corr_list$spearman<0),'direction'] <- '-1'
env_corr_list <- subset(env_corr_list, !env_corr_list$direction %in% NA)
env_corr_list$label <- as.character(round(env_corr_list$spearman, 3))

#读取环境变量的属性列表,分配 id 指代环境变量,并用在后续根据分类赋值颜色等
env_group <- read.delim('env_group.txt', stringsAsFactors = FALSE, check.names = FALSE)
env_group <- subset(env_group, env %in% unique(c(env_corr_list$source, env_corr_list$target)))
env_corr_list$IDsource <- match(env_corr_list$source, env_group$env) - 1 
env_corr_list$IDtarget <- match(env_corr_list$target, env_group$env) - 1

head(env_corr_list)

#输出相关性列表
#write.table(env_corr_list, 'env_corr.list.txt', row.names = FALSE, sep = '\t', quote = FALSE)

##networkD3 包的桑基图
library(networkD3)

#定义节点和连线的颜色
color <- 'd3.scaleOrdinal() .domain(["pH", "C", "N", "P", "K", "1", "-1"]) 
.range(["#377EB8", "#4DAF4A", "#984EA3", "#FF7F00", "#FFFF33", "#FF00004D", "#0000FF4D"])'

#指定预定义的变量 id,按相关性方向赋值连线颜色,相关性强度赋值连线尺寸
#节点颜色按预定义的变量的分类着色
#节点、字体、边界尺寸等,详情 ?sankeyNetwork
sankeyNetwork(Links = env_corr_list, Nodes = env_group,
    Source = 'IDsource', Target = 'IDtarget',  
    Value = 'weight', LinkGroup = 'direction', 
    NodeID = 'env', NodeGroup = 'group', 
    nodePadding = 50, nodeWidth = 20, fontSize = 12, 
    colourScale = color, height = 300, width = 800)