上一篇文章推送的是怎样调整corrplot热图的可视化参数,以修改字符和图例位置,数据可视化形式和字符小大和颜色等这篇是一个补充部分,记录怎样修改参数以变量排序方式和突出部分数据。本流程还是使用R统计绘图-环境因子相关性热图中的不同土壤环境因子数据进行相关性分析、绘制热图并进行图细节更改。流程开始按下图整理环境因子数据,行为样品名称,列为环境因子名称和分组信息,共有11个环境变量,3个分组信息。

图1|环境因子及分组信息表,env.csv。

1 设置工作路径并调用R包

# 设置工作路径#knitr::opts_knit$set(root.dir="D:\\EnvStat")# 使用Rmarkdown进行程序运行Sys.setlocale('LC_ALL','C') # Rmarkdown全局设置
# 调用R包library(Rmisc) library(corrplot)library(ggcorrplot)library(RColorBrewer)library(grDevices)library(vegan)

2 数据读入

options(stringsAsFactors=F)# R中环境变量设置,防止字符型变量转换为因子# 读入环境因子数据表ENV=read.csv("env.csv",header = T,row.names = 1,sep = ",",comment.char = "",stringsAsFactors = F,colClasses = c(rep("character",4),rep("numeric",11)))
head(ENV) # 查看数据前几行
#dim(ENV) # 查看数据行、列数
#str(ENV) # 查看数据表每列的数据形式
# 解决数据中存在ties的警告,选用"pearson"fan方法计算相关性系数,不用运行此命令
ENV[4:14] = rank(ENV[4:14], ties.method = "random") # 使用 "kendall"或 "spearman"方法计算相关性系数,可能会遇到此报错

3 绘制相关性热图

3.1 计算相关性系数、置信区间和显著性检验

# 3.1.1 环境因子相关性分析,根据自己的数据选择相关性计算方法:"pearson", "kendall", or "spearman"
#env.cor <- round(cor(ENV[4:14], method = "spearman"),3) # round(),对输出结果取小数点前三位,计算spearman相关性系数
#e?cor.mtestnv.cor <- round(cor(ENV[4:14], method = "kendall"),3) # round(),对输出结果取小数点前三位,计算kendall相关性系数
env.cor <- round(cor(ENV[4:14], method = "pearson"),3) # round(),对输出结果取小数点前三位,计算pearson相关性系数,要求数据满足正态分布,正态分布检测方法见之前的推文。
env.cor
# 3.1.2 进行显著性检验#env.p <-round(cor_pmat(ENV[4:14],method = "spearman"),3) # spearman系数#env.p <-round(cor_pmat(ENV[4:14],method = "kendall"),3) # kendall系数env.p <-round(cor_pmat(ENV[4:14],method = "pearson"),3) # pearson系数env.p 
# 3.1.3 使用corrplot的cor.mtest可以同时计算显著性检验和置信区间。返回是是一个列表#cor.mtest(ENV[4:14], conf.level = 0.95)env.uppCI = round(cor.mtest(ENV[4:14], conf.level = 0.95)$uppCI,3)env.uppCI # 置信区间上界env.lowCI = round(cor.mtest(ENV[4:14], conf.level = 0.95)$lowCI,3)env.lowCI # 置信区间下界

图2|pearson相关性系数,env.cor 。

图3|pearson相关性系数的p值,env.p 。

图4|pearson相关性系数置信区间上界,env.uppCI 。

3.2 相关性系数热图绘制

corrplot绘制热图,变量顺序默认跟输入顺序一致,但这样的热图看起来不一定很直观。所以参数order可用于对相关性数据矩阵进行重排序。如果想要突出图中某个区域,可以使用addrect参数给指定区域添加矩形框。非相关性数据矩阵、NA和数学表达式也可以使用corrplot可视化。

3.2.1 更改变量可视化顺序

order参数可选:'AOE', 'FPC', 'hclust'和'alphabet'。

#### 3.2.1 更改变量顺序?corrplot.mixed # 查看函数帮助信息m=par(no.readonly = TRUE) # 保存默认图形设置参数
pdf("order.pdf",width = 8,height = 12,family = "Times") # 保存图片到本地,并设置字体为Time New Roman
par(mfrow=c(3,2))# 形成3行,2列的图形矩阵
# a图 使用corrplot.mixed()绘制upper和lower以不同形式展示相关性系数热图,默认参数变量排序。corrplot.mixed(env.cor,env.p,               upper = "number",lower = "circle",               tl.pos = "lt",tl.col="black", diag="n")
# b图 order=“AOE”,AOE是 angular order of the eigenvectors。corrplot.mixed(env.cor, env.p,               upper = "number",lower = "circle",               tl.pos = "lt",tl.col="black", diag="n",               order="AOE")
# c图 order="FPC",FPC表示first principal component order。corrplot.mixed(env.cor, env.p,               upper = "number",lower = "circle",               tl.pos = "lt",tl.col="black", diag="n",               order="FPC")
# d图 order="hclust",hclust是hierarchical clustering order,设置层次聚类的同时,还需要选择聚类方法。
## 设置'hclust.method参数,可选:'ward', 'single', 'complete', 'average',  'mcquitty', 'median'或'centroid'。
corrplot.mixed(env.cor, env.p,upper = "number",lower = "circle",tl.pos = "lt",tl.col="black", diag="n",order="hclust",hclust="median")
# e图 order="hclust",hclust是hierarchical clustering order,设置层次聚类的同时,还需要选择聚类方法。
## 设置'hclust.method参数,可选:'ward', 'single', 'complete', 'average',  'mcquitty', 'median'或'centroid'。
corrplot.mixed(env.cor, env.p,upper = "number",lower = "circle",tl.pos = "lt",tl.col="black", diag="n",order="hclust",hclust="complete")
# f图 order="alphabet" alphabetical order表示按照字母顺序。corrplot.mixed(env.cor, env.p,               upper = "number",lower = "circle",               tl.pos = "lt",tl.col="black", diag="n",               order="alphabet")
dev.off() par(m)  # 恢复默认图形设置参数       注:使用add=TRUE对两个相关性热图进行叠加,upper和lower需要设置相同的排序方式。R包seriation可以通过几种seriation/sequencing/ordination方法对矩阵、相异矩阵和树状图进行重新排序。感兴趣的同学可以查看seriation帮助文件进行学习。

图5|导入外部软件计算的相关性系数和p值绘图可能会报错。使用as.matrix()可以解决。

图6|corrplot修改order参数调整变量顺序。a: 默认参数; b: order=“AOE”; c: order="FPC"; d:order="hclust",hclust="median"; e:order="hclust",hclust="complete"; f: order="alphabet"。

3.2.2 矩形框突出显示特定数据

corrplot()的addrect参数可以根据层次聚类发结果添加矩形框,以达到突出显示的效果。rect*参数可以修改矩形框的颜色和线宽度。需要注意的是,只有order="hclust"时此参数才起效。也可通过外部函数自定义矩形位置。corrRect.hclust()也可以根据层次聚类结果绘制矩形框,需要与corrplot()配合使用,可以可视化p值。corrRect()则可以自定义矩形框位置,需要corrplot()输出的列表数据和矩形位置信息作为输入,也需要与corrplot()配合使用进行可视化。

#### 3.2.2 矩形框突出显示特定数据m=par(no.readonly = TRUE) # # 保存默认图形设置参
pdf("addrect.pdf",width = 8,height = 12,family = "Times") # 保存图片到本地,并设置字体为Time New Roman。
par(mfrow=c(3,2))# 形成3行,2列的图形矩阵
# a图 addrect参数,此参数只能在type="full"以及没有p值矩阵的时候,才能正常运行。corrplot(env.cor,        tl.col="black",         order = "hclust",addrect =2,        rect.col = "black",rect.lwd = 2) # 由图所示,pH与其它环境因子分开。
# b图 corrRect.hclust()根据层次聚类的结果获取每个cluster的成员,需要与corrplot()配合使用,可以可视化p值。使用1-corr作为距离进行层次聚类。
?corrRect.hclust # 查看函数参数帮助信息
corrplot(corr = env.cor,p.mat = env.p,order = "hclust",hclust.method = "ward.D",insig = "label_sig",sig.level = c(.05,0.01),tl.col = "black",pch.cex = 0.8)
corrRect.hclust(env.cor, k = 3,method = 'ward.D') # method参数默认与corrplot设置的一致,k=3相当于addrect=3。帮助文件写可不在corrplot设置order参数,直接使用corrRect()中的method参数设置。但是我在实际操作中发现,必须在corrplot()中设置order和hclust.method参数,否则绘图行列变量名会与输入的一致,但是矩形框却是按照自定义的聚类方法形成的,导致绘图错误。所以建议直接在corrplot中设置聚类方法
#corrRect()则可以自定义矩形框位置,需要corrplot()输出的列表数据和矩形位置信息(index,name或namesMat)作为输入。
?corrRect # 查看函数参数帮助信息## c图,index参数使用序号数值指定矩形框起始终止位置,适用于行列名相同的矩阵。此处绘制与图b聚类结果相同的矩形框。
p <-  corrplot(corr = env.cor,p.mat = env.p,order = "hclust",hclust.method = "ward.D",insig = "label_sig",sig.level = c(.05,0.01),tl.col = "black",pch.cex = 0.8)
corrRect(p,index = c(1,2, 8, 11),col = "black",lwd = 2) # index数值依次表示为第一个矩形的起始位置为变量1,第二个矩形的起始位置为变量2,第三个矩形的起始位置为变量8,第三个矩形的终止位置为变量11。
## d图 name参数使用变量名称指定矩形框起始终止位置,适用于行列名相同的矩阵。此处绘制与图b聚类结果相同的矩形框。
name <- c("pH","AHN","TP","Ammonia")
p <-  corrplot(corr = env.cor,p.mat = env.p,order = "hclust",hclust.method = "ward.D",insig = "label_sig",sig.level = c(.05,0.01),tl.col = "black",pch.cex = 0.8)
corrRect(p,name = name,col = "blue",lwd = 3) # name的参数依次表示为第一个矩形的起始位置为变量TN,第二个矩形的起始位置为变量TP,第三个矩形的起始位置为变量AK,第三个矩形的终止位置为变量OC。
## e图 namesMat参数需要4个字符向量或者四列字符矩阵,用于指定绘制矩形框的左、下、右和上侧边界。可用于行列变量名不一致的情况。
nameMat <- rbind(c("pH","pH","pH","pH"),c("AHN","OC","OC","AHN"),c("TP","Ammonia","Ammonia","TP")
)
p <-  corrplot(corr = env.cor,p.mat = env.p,order = "hclust",hclust.method = "ward.D",insig = "label_sig",sig.level = c(.05,0.01),tl.col = "black",pch.cex = 0.8)
corrRect(p,namesMat = nameMat,col = "blue",lwd = 3) 
# f图 绘制一个矩形,"|>"可以将corrplot()输出结果传递给corrRect(),要求R版本大于4.1.0。nameMat <-c("pH","TP","TP","pH") # 设置矩形框的左、下、右和上侧的变量名称,即从左侧逆时针设置位置参数。
if(getRversion() >= "4.1.0"){corrplot(corr = env.cor,p.mat = env.p,order = "hclust",hclust.method = "complete",insig = "label_sig",sig.level = c(.05,0.01),tl.col = "black",pch.cex = 0.8) |> corrRect(namesMat = nameMat,col = "red",lwd = 3)
}
dev.off() par(m)注:corrRect.hclust()使用时method参数默认与corrplot设置的一致,k=3相当于addrect=3。帮助文件写可不在corrplot()设置order参数,直接使用corrRect()中的method参数设置。但是在实际操作中发现,必须在corrplot()中设置order和hclust.method参数,否则绘图行列变量名会与输入的一致,但是矩形框却是按照自定义的聚类方法形成的,导致绘图错误。所以建议直接在corrplot中设置聚类方法。R版本低于4.1.0可以使用magrittr包的“%>%”替代”|>“。

图7|添加矩形框热图。a: addrect参添加矩形框,此参数只能在type="full"以及没有p值矩阵的时候; b: corrRect.hclust()添加矩形框,需要与corrplot()配合使用,可以可视化p值; c: corrRec()使用index添加矩形框; d:corrRec()使用name添加矩形框e:corrRec()使用namesMat添加矩形框; f: corrRec()使用namesMat添加矩形框,使用“|>”将corrplot()输出结果传递给corrRect(),要求R版本大于4.1.0。

3.2.3 可视化非相关性矩阵、NA和数学表达式标签

使用is.corr=FALSE和col.lim参数绘制非相关性矩阵,col.lim是按col设置颜色的范围。如果矩阵的行列变量数量不一致,绘图时可以使用win.asp调整图形纵横比,使图形成正方形形式。除非method为'circle'或'square',否则win.asp的值一般不大于1。corrplot()默认用?表示NA,调整na.label参数,可以用最多2个字符表示NA。使用"$"激活plotmath,可以在绘图时设置变量名为数学表达式。

m = par(no.readonly = TRUE) # 保存默认图形设置参数pdf("dist.pdf",width=10,height = 10,family="Times") # 保存图片到本地par(mfrow=c(2,2)) # 设置2行,2列的图形矩阵
# 可视化非相关性数据矩阵## 基于环境因子数据计算样品间euclidean距离env.dist=as.matrix(vegdist(ENV[1:10,4:14],method = "euclidean")) # 计算前10个样品的euclidean距离,并形成矩阵格式
env.dist
## a图,绘制样本环境因子距离热图?hcl.colorshcl.pals() # 查看存在的颜色板名称col3 = hcl.colors(12, "YlOrRd", rev = TRUE) # 选择了YlOrRD颜色板的12个颜色,并反转了颜色顺序。设置颜色适合[-N, 0]或[0, N]数据格式。
corrplot(env.dist, is.corr = FALSE, col.lim=c(0,60),col = col3, win.asp = 1) #col.lim是按col设置颜色的范围,默认是[min(env.dist), max(env.dist)],自定义的范围需要超过数据矩阵的范围。 
# 可视化NA## 图b,na.label默认参数diag(env.dist) = NA # 将env.dist数据矩阵的对角线值设置为NA。corrplot(env.dist, is.corr = FALSE, col.lim=c(0,60),         col = col3, win.asp = 1) # 行列变量数不一样,可以设置win.asp值,调整图的纵横比。
## 图c,设置na.label="NA"diag(env.dist) = NA # 将env.dist数据矩阵的对角线值设置为NA。corrplot(env.dist, is.corr = FALSE, col.lim=c(0,60),         col = col3, win.asp = 1,na.label="NA")
# 可视化数学公式标签## "$"激活plotmath,设置变量名为数学表达式。colnames(env.dist) = rep(c('$alpha+beta', '$alpha[0]', '$alpha[beta]'),                    c(3, 3, 4))rownames(env.dist) = rep(c('$Sigma[i]^n', '$sigma',  '$alpha[0]^100', '$alpha[beta]'), c(2, 3, 2, 3))## 图d,绘制变量名为数学表达式热图
corrplot(env.dist, is.corr = FALSE, col.lim=c(0,60),col = col3, win.asp = 1,na.label="NA")dev.off() # 保存图片到本地
par(m) # 恢复默认图形设置参数

图8|样本距离矩阵。

图9|corrplot的type参数修改热图展示方式。a: upper; b: lower。

扫描上方二维码,关注EcoEvoPhylo数据分析小店,购买数据分析书籍和服务。 corrplot包推文就写到这里,其实还有很多函数可以设置,感兴趣的话,可以查看帮助文件进行学习。公众号后台发送“corrplot heatmap”获取数据和全部代码。

参考文献

http://www.datavis.ca/papers/corrgram.pdf

http://127.0.0.1:24605/library/corrplot/doc/corrplot-intro.html#reorder-a-correlation-matrix


推荐阅读

R中进行单因素方差分析并绘图

R绘图-相关性分析及绘图

R绘图-相关性系数图

R统计绘图-环境因子相关性热图

R统计绘图-corrplot绘制热图及颜色、字体等细节修改

R绘图-RDA排序分析

R统计绘图-RDA分析、Mantel检验及绘图

R统计-VPA分析(RDA/CCA)

R统计-PCA/PCoA/db-RDA/NMDS/CA/CCA/DCA等排序分析教程


开放转载

公众号原创文章开放转载,在文末留言告知即可

EcoEvoPhylo :主要分享微生物生态和phylogenomics的数据分析教程。扫描上方二维码,即可关注EcoEvoPhylo。让我们大家一起学习,互相交流,共同进步。

R统计绘图-corrplot热图绘制细节调整2(更改变量可视化顺序、非相关性热图绘制、添加矩形框等)相关推荐

  1. R统计绘图-corrplot绘制热图及颜色、字体等细节修改1

    有师妹想要更改热图的颜色和字体,想着之前相关性绘图等推文只是使用corrplot默认的颜色绘图,为了帮师妹解惑,今天就写一篇,怎么设置热图颜色和字体等细节到推文.其实看一遍R语言实战|入门3:图形初阶 ...

  2. R统计绘图-PCA分析及绘制双坐标轴双序图

    zhe 点击名片   关注我们 有师妹来咨询,怎样画类似于上图的双坐标轴PCA双序图.正好之前虽然PCA和RDA分析及绘图都写过教程,但是变量分析结果没有在图中显示,所以使用R统计绘图-环境因子相关性 ...

  3. R统计绘图 | 物种组成冲积图(绝对/相对丰度,ggalluvial)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  4. R统计绘图 | 物种组成堆叠面积图(绝对/相对丰度,ggalluvial)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  5. R统计绘图-PCA详解1(princomp/principal/prcomp/rda等)

    此文为<精通机器学习:基于R>的学习笔记,书中第九章详细介绍了无监督学习-主成分分析(PCA)的分析过程和结果解读. PCA可以对相关变量进行归类,从而降低数据维度,提高对数据的理解.分析 ...

  6. R统计绘图-VPA(变差分解分析)

    变差分解分析(Variance Partitioning Analysis)可用于确定指定环境因子对微生物(原生生物/植物/动物等等)群落结构变化的解释比例.要计算指定环境因子与群落结构的相关性,就需 ...

  7. R统计绘图 | 物种组成堆叠柱形图(绝对/相对丰度)

    一.数据准备 数据使用的不同处理土壤样品的微生物组成数据,包含物种丰度,分类单元和样本分组数据.此数据为虚构,可用于练习,请不要作他用. # 1.1 设置工作路径 #knitr::opts_knit$ ...

  8. R统计绘图-多元线性回归(最优子集法特征筛选及模型构建,leaps)

    此文为<精通机器学习:基于R>的学习笔记,书中第二章详细介绍了线性回归分析过程和结果解读. 回归分析的一般步骤: 1. 确定回归方程中的自变量与因变量. 2. 确定回归模型,建立回归方程. ...

  9. R统计绘图-One-Way MANOVA

    存在两个及以上连续结果(或响应)变量的ANOVA被称为多变量方差分析(Multivariate Analysis of Variance,MANOVA).例如,将小鼠分为处理A和处理B两组后,测量小鼠 ...

最新文章

  1. PHP APC安装与使用
  2. 1045 Favorite Color Stripe(LIS解法)
  3. 零基础入门学习Python(5)Python的数据类型
  4. 比特币的挑战者 BCH 带着开发者们来到湾区了!
  5. Gogland IDE Run/Debug Configurations 配置说明
  6. Android之实现夸克浏览器书签和历史页面滑动时候右上角图标切换效果
  7. 演示:Linux工程环境应用实训(防火墙、NAT、静态路由)详细配步骤
  8. 抗击肺炎,中国互联网公司在行动
  9. 他是Facebook广告投入费用过亿的独立站卖家
  10. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计
  11. LeetCode 260. Single Number III
  12. ng-repeat动态生成的DOM如何获取宽度(封装好的方法)
  13. java对称矩阵_对称矩阵与压缩存储算法(java实现)
  14. 总结 | Prompt在NER场景的应用
  15. 【matplotlib】绘图模块介绍
  16. 华为openEuler系统-虚拟机(VMware)安装
  17. 小学五年级计算机教学论文,五年级小学英语教学论文【三篇】
  18. php生成小程序二维码出现40001的情况
  19. AutoJS4.1.0实战教程 ---火热持续更新中
  20. 主板修改BIOS装联想XP(附改好的文件

热门文章

  1. 关于在win8下面安装虚拟机出现的一些问题
  2. word批量导入试题,一键组卷,单机软件题库管家迎来1.2版本
  3. 对辊柱塞式成型机总体设计
  4. 2022-2023上学期 奖状的清单
  5. 怎样把普洱熟茶泡得更好喝?
  6. 极米Z6X Pro怎么样?极米Z6X Pro亮度如何?极米Z6X Pro值得入手吗?
  7. 【行业秘密公开】所谓的QQ刷钻业务
  8. 7.PCIE配置空间读写软件
  9. Windows 上6款卸载软件值得推荐
  10. 在Android Studio中的混淆debug与release