在16s与代谢组贯穿分析中,相关性热图是一个重要的分析手段,主要用于逐一呈现细菌物种与代谢物间的相关性高低,是筛选潜在关联的物种与代谢物的主要途径,对于下游的实验起到指导意义。另外通过相关性热图表示显著性(p)值更显直观。本文将介绍R中具体操作。
1.加载R包。
library(psych) #psych包用于计算相关性、p值等信息
library(pheatmap) #用于绘制热图
library(reshape2) #reshape2包用于输出数据的整合处理
2.读入数据。
df1 <- read.csv("d:/Rdata/R-compounds.csv",header=T,row.names = 1) #读入化合物丰度列表
df2 <- read.csv("d:/Rdata/R-taxon.csv",header=T,row.names = 1) #读取微生物丰度信息表
代谢物丰度格式(选自其他文章)
微生物丰度格式(选自其他文章)
3.计算相关性及p值。
res <- corr.test(df1,df2,method = "pearson",alpha = 0.05) #method可选“pearson”、“spearman”、“kendall”
result_p <- res$p #提取p值
result_r <- res$r #提取cor值
p.out<-cbind(rownames(result_p),result_p) #输出p值
r.out<-cbind(rownames(result_r),result_r) #输出cor值
write.csv(p.out,"pout.csv",row.names = F)
write.csv(r.out,"rout.csv",row.names = F)
4.整合数据。
df <-melt(result_r,value.name="cor")
df$pvalue <-as.vector(result_p) #宽格式转长格式
df2 <- subset(df,abs(df$cor)>0.75&df$pvalue<0.05)#筛选
write.csv(df,"melt_p_r.csv",row.names = F)#输出长格式
write.csv(df2,"melt_p005_r075.csv",row.names = F)
5.绘制显著性及热图。
if (!is.null(result_p)){
ssmt <- result_p< 0.01
result_p[ssmt] <-'**'
smt <- result_p >0.01& result_p <0.05
result_p[smt] <- '*'
result_p[!ssmt&!smt]<- ''
} else {
result_p <- F
} #判断p值大小,若p<0.01,则'**',若0.01<p<0.05,则'*',否则无显著。
pheatmap(result_r,scale = "row",cluster_row = T, cluster_col = T, border=NA,display_numbers = result_p, number_color = "white")#根据自己的喜好绘制热图
结果展示














网友评论