基因差异火山图看法如下:
火山图可反映总体基因的表达情况,横坐标代表log2(Fold Change),纵坐标表示-log10(P值),每个点代表一个基因,颜色用以区分基因是否差异表达,图中橙色的点代表差异表达基因,蓝色的点代表没有差异表达的基因。聚类图聚类图可以衡量样本或基因之间表达的相似性。
在聚类图中,横坐标代表样本聚类,一列代表一个样本,聚类基于样本间基因表达的相似性,样本间基因表达越接近,靠的越近,以此类推。
纵坐标代表基因聚类,一行代表一个基因,聚类基于基因在样本中表达的相似性,基因在样本中表达越接近,靠的越近,以此类推。
色阶代表基因表达丰度,越红代表上调得越明显,越绿代表下调得越明显。
火山图先关:
火山图(Volcano Plot)是一类用来展示组间差异数据的图像,因为在生物体发生变化时从全局角度而言大部分的基因表达没有或着发生了很小程度的变化,只有少部分基因的表达发生了显著的变化。故而,火山图常见于RNA表达谱和芯片的数据分析中,最常用于分析基因的差异表达,近年来也陆续有其他组学的应用,此处不做详述。
火山图的本质是一个Plus版的散点图,其中包含两个重要的概念:
1)显著性,也就是p-value,差异性检验两组样本的p值,以负对数-log10(P-value)转换做为纵坐标;
2)以log2(Fold Change)为横坐标,即可得火山图,利用一定的筛选条件(如Fold Change大于2倍,显著性P值小于0.05),即可筛选出显著差异表达的基因,进行后续研究。
如果大家用的是DEseq2分析RNA表达谱的数据,分析结果应该如下,其中
log2FoldChange是表达量的log2(Fold Change)值,padj列示矫正后的pvalue,这两列也就是我们画火山图需要的两列。
首先,我们把DEseq的输出格式转换成dataframe格式,用函数as.data.frame(),并用head查看其前6行,如下:
df <- as.data.frame(res)
head(df)
接下来按照P<0.05, log2FoldChange > 2 或者log2FoldChange < -2进行下调和上调表达的颜色设置:
设定分组并赋值给变量color,我们把P<0.05, log2FoldChange > 2定义为上调,颜色设置为红色,把P<0.05, log2FoldChange < -2定义为下调,颜色设定为蓝色,其他既不上调也不下调的颜色设定为灰色,见代码如下:
df$color <- ifelse(df$padj < 0.05 & abs(df$log2FoldChange) >= 2,ifelse(df$log2FoldChange > 2 ,'red','blue'),'gray')
设定好分组,还需要给分组指定颜色:
r color<- c(red = "red", gray = "gray", blue ="blue")
绘图的完整代码在这里:
p <- ggplot(df, aes(log2FoldChange, -log10(padj), col = color)) +
geom_point() +
theme_bw() +
scale_color_manual(values = color) +
labs(x="log2 (fold change)",y="-log10 (q-value)") +
geom_hline(yintercept = -log10(0.05), lty=4,col="grey",lwd=0.6) +
geom_vline(xintercept = c(-2, 2), lty=4,col="grey",lwd=0.6) +
theme(legend.position = "none",
panel.grid=element_blank(),
axis.title = element_text(size = 16),
axis.text = element_text(size = 14))
p
代码部分需要注意的亮点:
1)对qvalue做了一个log10的转换
2)画纵轴阈值线的时候做了-log10(0.05)
3)其他绘图参数和理念都是和绘制散点图是一样的