首页 > 技术文章 > R-相关性系数组合图

huangjing1994 2018-10-27 21:22 原文

绘制相关性系数组合图
library(ggplot2)
library(vegan)
A=read.csv("A.csv",sep=",",header=T,row.names=1)
B=read.csv("B.csv",sep=",",header=T,row.names=1)
C=read.csv("C.csv",sep=",",header=T,row.names=1)
T=read.csv("T.csv",sep=",",header=T,row.names=1)
#pg环境因子分开与待分析变量对应
pg=read.csv("pg.csv",sep=",",header=TRUE,row.names=1,)
pgA=pg[1:12,]
pgB=pg[13:24,]
pgC=pg[25:36,]
pgT=pg[37:48,]
nameA=as.data.frame(pgA$name,row.names = row.names(pgA))
colnames(nameA)[1]="group"
nameB=as.data.frame(pgB$name,row.names = row.names(pgB))
colnames(nameB)[1]="group"
nameC=as.data.frame(pgC$name,row.names = row.names(pgC))
colnames(nameC)[1]="group"
nameT=as.data.frame(pgT$name,row.names = row.names(pgT))
colnames(nameT)[1]="group"
pga=pgA[,-12]
pgb=pgB[,-12]
pgc=pgC[,-12]
pgt=pgT[,-12]
#做相关性分析,将环境因子与变量合并
PA=cbind.data.frame(pga,A)
PB=cbind.data.frame(pgb,B)
PC=cbind.data.frame(pgc,C)
PT=cbind.data.frame(pgt,T)
A.cor<-cor(PA)
B.cor<-cor(PB)
C.cor<-cor(PC)
T.cor<-cor(PT)
#删除NA的变量
#删除列
A.cor[,-which(names(A.cor)%in%c("Kocuria")]
A.cor=subset(A.cor,select=-c(Kocuria))
#删除行
A.cor=A.cor[complete.cases(A.cor),]
PA$Kocuria=NULL
B.cor[,-which(names(B.cor)%in%c("Rhodococcus")]
B.cor=subset(B.cor,select=-c(Rhodococcus))
B.cor=B.cor[complete.cases(B.cor),]
PB$Rhodococcus=NULL
C.cor[,-which(names(C.cor)%in%c("Kocuria")]
C.cor=subset(C.cor,select=-c(Kocuria))
C.cor=C.cor[complete.cases(C.cor),]
PC$Kocuria=NULL
library(vcd)
library(corrplot)
library(psych)
#将四幅图组合在一张图中,方法一
#matrix中的数字就是分割后的图像区域的序数
layout(matrix(c(1,3,2,4), nrow=2, byrow = TRUE),widths=c(2,2),heights=c(2,2))
opar <- par(no.readonly=TRUE)
#设置图边距及缩放0.5
par(mai=c(0.6,0.6,0.1,0.1),cex=0.5)
#查看画布布局
#layout.show(4)
#用于先作图后组合multiplot(plotlist = list(A.cor.plot,B.cor.plot, C.cor.plot,T.cor.plot), layout = layout)
A.test=corr.test(PA, use = "complete")
sig.A <- cor.mtest(PA, conf.level = .95)
#pch.cex=1.2,表示显著性标记的大小
A.cor.plot<-corrplot(corr =A.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
A.cor.plot<-corrplot(corr = A.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=1.2,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.A$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=1, pch.col = "black",tl.col="black",number.cex = 1.2)
B.test=corr.test(PB, use = "complete")
sig.B <- cor.mtest(PB, conf.level = .95)
B.cor.plot<-corrplot(corr =B.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
B.cor.plot<-corrplot(corr = B.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=1.2,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.B$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=1, pch.col = "black",tl.col="black",number.cex = 1.2)
C.test=corr.test(PC, use = "complete")
sig.C <- cor.mtest(PC, conf.level = .95)
C.cor.plot<-corrplot(corr =C.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
C.cor.plot<-corrplot(corr = C.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=1.2,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.C$p, insig = "label_sig", sig.level = c(.001, .01, .05),pch.cex=1, pch.col = "black",tl.col="black",number.cex = 1.2)
T.test=corr.test(PT, use = "complete")
sig.T <- cor.mtest(PT, conf.level = .95)
T.cor.plot<-corrplot(corr =T.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
T.cor.plot<-corrplot(corr = T.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=1.2,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.T$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=1, pch.col = "black",tl.col="black",number.cex = 1.2)
par(opar)

#将四幅图组合在一张图中,方法二
par(pty="s",mfrow = c(2, 2))
A.test=corr.test(PA, use = "complete")
sig.A <- cor.mtest(PA, conf.level = .95)
A.cor.plot<-corrplot(corr =A.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
A.cor.plot<-corrplot(corr = A.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.A$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.35, pch.col = "black",tl.col="black",number.cex = .7)
B.test=corr.test(PB, use = "complete")
sig.B <- cor.mtest(PB, conf.level = .95)
B.cor.plot<-corrplot(corr =B.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
B.cor.plot<-corrplot(corr = B.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.B$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.35, pch.col = "black",tl.col="black",number.cex = .7)
C.test=corr.test(PC, use = "complete")
sig.C <- cor.mtest(PC, conf.level = .95)
C.cor.plot<-corrplot(corr =C.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
C.cor.plot<-corrplot(corr = C.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.C$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.35, pch.col = "black",tl.col="black",number.cex = .7)
T.test=corr.test(PT, use = "complete")
sig.T <- cor.mtest(PT, conf.level = .95)
T.cor.plot<-corrplot(corr =T.cor,order="AOE",type="upper",tl.pos="tp",tl.col="black")
T.cor.plot<-corrplot(corr = T.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.T$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.35, pch.col = "black",tl.col="black",number.cex = .7)


#将四幅图组合在一张图中,方法三

opar<-par(no.readonly=TRUE)
par(fig=c(0,0.5,0.5,1))
A.test=corr.test(PA, use = "complete")
sig.A <- cor.mtest(PA, conf.level = .95)
A.cor.plot<-corrplot(corr =A.cor,order="AOE",type="upper",tl.pos="tp")
A.cor.plot<-corrplot(corr = A.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.A$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(fig=c(0.5,1,0.5,1),new=T)
B.test=corr.test(PB, use = "complete")
sig.B <- cor.mtest(PB, conf.level = .95)
B.cor.plot<-corrplot(corr =B.cor,order="AOE",type="upper",tl.pos="tp")
B.cor.plot<-corrplot(corr = B.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.B$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(fig=c(0,0.5,0,0.5),new=T)
C.test=corr.test(PC, use = "complete")
sig.C <- cor.mtest(PC, conf.level = .95)
C.cor.plot<-corrplot(corr =C.cor,order="AOE",type="upper",tl.pos="tp")
C.cor.plot<-corrplot(corr = C.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.C$p, insig = "label_sig",sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(fig=c(0.5,1,0,0.5),new=T)
T.test=corr.test(PT, use = "complete")
sig.T <- cor.mtest(PT, conf.level = .95)
T.cor.plot<-corrplot(corr =T.cor,order="AOE",type="upper",tl.pos="tp")
T.cor.plot<-corrplot(corr = T.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.T$p, insig = "label_sig", sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(opar)
#方法四
par(mar = c(12,2,2,12))
A.test=corr.test(PA, use = "complete")
sig.A <- cor.mtest(PA, conf.level = .95)
A.cor.plot<-corrplot(corr =A.cor,order="AOE",type="upper",tl.pos="tp")
A.cor.plot<-corrplot(corr = A.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.A$p, insig = "label_sig",
                     sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(mar = c(12,12,2,2))
B.test=corr.test(PB, use = "complete")
sig.B <- cor.mtest(PB, conf.level = .95)
B.cor.plot<-corrplot(corr =B.cor,order="AOE",type="upper",tl.pos="tp")
B.cor.plot<-corrplot(corr = B.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.B$p, insig = "label_sig",
                     sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(mar=c(2,2,12,12))
C.test=corr.test(PC, use = "complete")
sig.C <- cor.mtest(PC, conf.level = .95)
C.cor.plot<-corrplot(corr =C.cor,order="AOE",type="upper",tl.pos="tp")
C.cor.plot<-corrplot(corr = C.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.C$p, insig = "label_sig",
                     sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
par(mar = c(2,12,12,2))
T.test=corr.test(PT, use = "complete")
sig.T <- cor.mtest(PT, conf.level = .95)
T.cor.plot<-corrplot(corr =T.cor,order="AOE",type="upper",tl.pos="tp")
T.cor.plot<-corrplot(corr = T.cor,add=TRUE, type="lower",method="number",order="AOE", col="black",tl.cex=0.3,diag=FALSE,tl.pos="n", cl.pos="n",p.mat = sig.T$p, insig = "label_sig",
                     sig.level = c(.001, .01, .05),pch.cex=0.01, pch.col = "black")
参考文献:使用corrplot包绘制相关性图
     初识layout函数
                  layout函数用法
                 R可视化之图形控制和布局基础

附件列表

     

    推荐阅读