火山图(Volcano Plot)在一张图中显示了两个重要的指标(Fold change/pvalue),可以非常直观且合理地筛选出在两样本间发生差异表达的基因。检验分析出两样本间显著差异表达的基因后,以log2(fold change)为横坐标,以T检验显著性检验P值的负对数-log10(pvalue)为纵坐标,即可得火山图(Volcano Plot)。
这里有两个重要概念需要了解:
FDR:在差异表达分析过程中,采用Benjamini-Hochberg方法对原有假设检验得到的显著性p值(p-value)进行校正,并最终采用校正后的p值,即FDR(False Discovery Rate)。
FC(Fold Change):两样品(组)间表达量的比值。
我们使用R语言中的ggplot2包来绘制火山图。首先加载R包及示例数据。
library('ggplot2')
head(temp1,10)
-log10FDR logFC Regulate
64170 1.971938 -2.2884388 Down
6674 1.864104 -1.2460804 Down
7401 1.864104 1.2950939 Up
57217 1.864104 -1.2676311 Down
50613 1.801074 1.6640064 Up
3433 1.801074 4.2696415 Up
54830 1.801074 -1.9012811 Down
54886 1.801074 -1.5446208 Down
6355 1.801074 1.4273926 Up
338324 1.801074 0.9592775 Normal
其中行名为GeneID,第一列为-log10FDR,第二列为log2FC,第三列为上下调信息。
将第三列设置为有序因子,方便后续图片颜色设置。
temp1$Regulate=factor(temp1$Regulate, levels=c('Up','Down','Normal'), order=T)
绘制成点图:
P_volcano=ggplot(temp1,aes(x=temp1$logFC,y=temp1[,'-log10FDR']))+
geom_point(aes(color=temp1$Regulate))+
#设置点的颜色
scale_color_manual(values =c('Up' = 'red', 'Down' = 'blue', 'Normal' = 'grey'))+
labs(x='log2FC',y='-log10FDR')+
#增加阈值线:分别对应FDR=0.05,|log2FC|=1
geom_hline(yintercept=-log10(0.05),linetype=4)+
geom_vline(xintercept=c(-1,1),linetype=4)+
xlim(-5,5)+
theme(plot.title = element_text(size = 25,face = 'bold', vjust = 0.5, hjust = 0.5),
legend.title = element_blank(),
legend.text = element_text(size = 18, face = 'bold'),
legend.position = 'right',
legend.key.size=unit(0.8,'cm'),
axis.ticks.x=element_blank(),
axis.text.x=element_text(size = 15,face = 'bold', vjust = 0.5, hjust = 0.5),
axis.text.y=element_text(size = 15,face = 'bold', vjust = 0.5, hjust = 0.5),
axis.title.x = element_text(size = 20,face = 'bold', vjust = 0.5, hjust = 0.5),
axis.title.y = element_text(size = 20,face = 'bold', vjust = 0.5, hjust = 0.5),
panel.background = element_rect(fill = 'transparent',colour = 'black'),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
plot.background = element_rect(fill = 'transparent',colour = 'black'))
P_volcano
结果图如下:
会生信,画图很简单!想学的可以参考我们的作图课程《R语言绘图基础(ggplot2)》,该课程直接从生物数据案例入手,手把手教你掌握ggplot2绘图基础,从简单的柱状图开始,一步一步深入,实现R语言绘图技能的提高,帮你轻松做美图更好发文章!
联系客服