基因火山图怎么做

Python013

基因火山图怎么做,第1张

基因差异火山图看法如下:

火山图可反映总体基因的表达情况,横坐标代表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)其他绘图参数和理念都是和绘制散点图是一样的

上一期 R绘图|ggplot2散点图的绘制 简单介绍了散点图在高通量数据展示上的作用,以及如何绘制?散点图在数据展示上存在局限,只能体现基因的差异幅度,并不能体现统计学意义。因此,在高通量文章中,还有一种较为全面的展示数据特点的工具——火山图,可同时直观体现数据差异幅度和统计学意义。

如下图,火山图体现出一组数据(Test/Con)之间的差异幅度和统计学意义分布。X轴代表log2(FC);Y轴代表-log10(q value),灰色代表无差异基因,红色代表上调基因,绿色代表下调基因。X轴的取值可以是FC,也可以是log2处理后的值。X轴的取值可以是q value,也可以是p value(这两个值都属于统计值,只是使用不同方法得出)。在可视化上,形似火山,火山喷发得越高代表统计值越有意义;火山喷发得越外扩代表差异幅度越大。

今天呢,来简单演示下火山图的绘制方法,有数据的小伙伴可以试试!数据可以是高通量检测下所有基因、蛋白、代谢物、甲基化位点信息及其差异倍数和统计学数值。

扩展: 火山图其实是种可视化形式,它的数据来源不一定非得就是FC和P值,只要数据存在两个特征值(连续性数值),其中一个值有正负属性即可。比如:代谢组学数据的FC和VIP值亦可以用火山图展示;GSEA分析结果中通路的P值和NES值也可以用火山图展示。

更多内容可关注公共号“YJY技能修炼”~~~

往期回顾

R绘图|ggplot2散点图的绘制

R绘图|pheatmap热图绘制——基础篇

R绘图|pheatmap热图绘制——中阶篇

R绘图|pheatmap热图绘制——高阶篇