参考 木舟笔记
如何看懂火山图
- 标准的火山图常用于展示显著差异表达的基因,这里有两个关键词:显著是指P<0.05,差异表达一般我们按照Fold Change(倍数变化)>=2.0作为标准。
- 当我们拿到基因表达的P值和倍数后,为了用火山图展示结果,一般需要把倍数进行Log2的转化,比如某基因在实验组表达水平是对照组的4倍,log2(4)=2,同样的如果是1/4,也就是0.25,转换后的结果就是-2
- 同样的道理,对P值进行-log10的转化,-log10(0.05)约等于1.30103,由于P值越小表示越显著,所以我们进行-log10(P value)转化后,转化值越大表示差异约显著,比如-log10(0.001)=3 > -log10(0.01)=2 > -log10(0.05)=1.30。
火山图的意义
火山图可用于展示两组样本间基因表达水平差异的分布状况。
横轴log2 fold change差异表达倍数(Fold Change值,简称FC),差异越大的基因分布X轴在两端。
纵坐标用-log10 p-value表示,对P值进行-log10的转化。转化后,值越大就表示差异越显著。
看看数据
rm(list=ls())
options(stringsAsFactors = F)
library(RColorBrewer)
setwd('D:\\genetic_r\\R-plot\\b-plot-study\\5.22\\2021.4.12')
df <- read.csv("df.csv",row.names = 1) ##导入数据,第一列作为行名
fd <- 0.25 #设置foldchange阈值
cut.fd <- 0.25
pvalue <- 0.05 #设置p阈值
pdf( "df_volcano.pdf") #打开画板
plot(df$fd, -log10(df$P_value_adjust), col="#00000033", pch=19,
xlab=paste("log2 (fold change)"),
ylab="-log10 (P_value_adjust)")
#筛选上下调
up <- subset(df, df$P_value_adjust < pvalue & df$fd > cut.fd)
down <- subset(df, df$P_value_adjust< pvalue & df$fd< as.numeric(cut.fd*(-1)))
#绘制上下调
points(up$fd, -log10(up$P_value_adjust), col=1, bg = brewer.pal(9, "YlOrRd")[6], pch=21, cex=1.5)
points(down$fd, -log10(down$P_value_adjust), col = 1, bg = brewer.pal(11,"RdBu")[9], pch = 21,cex=1.5)
#加上线p、fd阈值线
abline(h=-log10(pvalue),v=c(-1*fd,fd),lty=2,lwd=1)
dev.off()#关闭
21.57.png
在上面这个图中,横轴是log2(FC),纵轴是-log10(P value),每个点代表一个基因,平行于Y轴的两条线分别是X=0.25和X=-0.25同时,平行于X轴有一条虚线Y=1.30,即-log10(0.05),在虚线以上的点表示显著性<0.05的基因。
这样,我们就把虚线Y=1.30以上,X=0.25右侧和X=-0.25左侧的基因标记为表达显著差异的基因
- 上图以|logFC|=0.25且p-value=0.05为截断标准
- logFC>0.25且p-value<0.05定义为上调的基因
- logFC<-0.25且p-value<0.05定义为下调的基因
- 图中红色的点代表上调的基因,蓝色得点代表下调的基因,黑点是无显著差异的基因。
网友评论