火山图(Volcano plot)是散点图的一种,它将统计测试中的统计显著性量度(如p-value)和变化幅度相结合,从而能够帮助快速直观地识别那些变化幅度较大且具有统计学意义的数据点(代谢物等)。是一种单变量统计分析方法,常应用于研究基因组、转录组、代谢组、蛋白质组等数据分析
火山图怎么看?
表示数据集编号纵坐标是P值,表示某个基因在比较分组之间的表达差异是否足够显著,一般认为p-value<0.05为显著。-log转换之后的值 -log10(p-valus=0.05)约等于1.3。所以纵坐标越往上P值越小横坐标为log2FC值即差异倍数值。根据他的差异倍数阈值情况去限定是否有差异,绝对值越大,差异表达越显著此图的阈值设置:log2FC的绝对值为0.1图中每个点代表一个基因,蓝色为显著差异的下调基因,红色为显著差异的上调基因,灰色为差异不显著的基因线上方表示P-value小于0.05点越偏离中心,表示差异倍数越大
总之就是横着看基因与对照组的差异,竖着看有无统计学意义
火山图代码
# 代码来源:https://www.r2omics.cn/
# 加载R包,没有安装请先安装 install.packages("包名")
library(ggplot2)
# 读取火山图数据文件
data = read.delim("https://www.r2omics.cn/res/demodata/Volcano.txt",
header = T # 指定第一行是列名
)
# 建议您的文件里对应的名称跟demo数据一致,这样不用更改后续代码中的变量名称
FC = 1.5 # 用来判断上下调,一般蛋白质组的项目卡1.5
PValue = 0.05 #用来判断上下调
# 判断每个基因的上下调,往数据框data里新增了sig列
data$sig[(-1*log10(data$PValue) < -1*log10(PValue)|data$PValue=="NA")|(log2(data$FC) < log2(FC))& log2(data$FC) > -log2(FC)] <- "NotSig"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) >= log2(FC)] <- "Up"
data$sig[-1*log10(data$PValue) >= -1*log10(PValue) & log2(data$FC) <= -log2(FC)] <- "Down"
# 绘图
p = ggplot(data,aes(log2(FC),-1*log10(PValue))) + # 加载数据,定义横纵坐标
geom_point(aes(color = sig)) + # 绘制散点图,分组依据是数据框的sig列
labs(title="volcanoplot", # 定义标题,x轴,y轴名称
x="log[2](FC)",
y="-log[10](PValue)") +
scale_color_manual(values = c("#619cff","grey","#f8766d")) + # 自定义颜色,将values更改成你想要的三个颜色
geom_hline(yintercept=-log10(PValue),linetype=2)+ # 在图上添加虚线
geom_vline(xintercept=c(-log2(FC),log2(FC)),linetype=2)+
theme_bw()
p