嵌套Venn图的绘制(R语言)

Python015

嵌套Venn图的绘制(R语言),第1张

​如何在差异基因Venn图中同时标识上下调基因数量信息

韦恩(Venn)图是常见统计图之一,用于展示各样本(或分组)之间共有(或特有)元素的数量(或比例)。例如做RNA-seq的最直接目的,大多是鉴定差异表达的基因。当试验涉及到多分组情况时,常需要展示多组间共享的差异基因数量,这个时候就要使用到Venn图。例如文献 “Transcriptomic analyses of rice (Oryza sativa) genes and non-coding RNAs under nitrogen starvation using multiple omics technologies” 中,植物组织中响应7天氮缺乏(-N_7d)、7天磷酸盐缺乏(-Pi_7d)和盐胁迫(d)、冷胁迫(e)或干旱胁迫(f)的差异表达lncRNA的Venn图。

不过这种Venn图太过单调,虽然展示了差异基因的数量,却没有区分基因是上调的还是下调的。另一种思路是,分别把上调或下调的基因拿出来,然后分别作图展示上调基因间的交集或者下调基因间的交集,但缺点是如果分组较多的话会很占篇幅,并且如果一个基因在一组中上调而在另一组中下调时则无法绘制出。

为了有效解决这些问题,今天我们来看一种特殊风格的Venn图,能够同时展示基因交集以及上下调数量的二维信息。风格如下, 在Venn图中原数字位置添加了表示上下调基因数量的饼图 。外圈表示不同的分组,饼图则表示了交集/或特有区域中,所包含的上调(红色)和下调(绿色)基因数量。此外,如果交集处某基因在不同组中的上下调趋势不一致,则在灰色区域显示数量。

本节我们来学习如何在R语言中绘制这种特殊的Venn图。

示例数据“treat1_control.txt”、“treat2_control.txt”和“treat3_control.txt”分别为3种不同试验处理下的样品,与对照组相比后识别的显著差异表达基因。表中genes列为差异基因的名称,logFC列中将所有上调基因标识为1,所有下调基因标识为-1。

接下来绘制Venn图展示3组基因的交集概况,并同时将基因的上下调数量信息也表示出来。

使用R包GOplot,即可通过给定的数据绘制这种特殊的Venn图,同时展示基因交集以及上下调数量的二维信息。

这样这种Venn图组合饼图的样式就得到了。

右图Venn图的外圈表示数据中,3组处理组间相同/或特有的差异表达基因数量概况,具体的数值在饼图中展示,红色代表共有的上调基因,绿色代表共有的下调基因,灰色表示交集中在不同组中的上下调趋势不一致的基因。

对于各组交集具体涉及了哪些基因,它们的名称、上下调状态如何,将直接在面板中显示出来,如左图所示列表信息。

总之过程非常方便,很简单的一条命令,您get到了吗?

用如下命令:

ls("package:KEGG.db")

[1] "KEGG" "KEGG_dbconn" "KEGG_dbfile" "KEGG_dbInfo"

[5] "KEGG_dbschema""KEGGENZYMEID2GO" "KEGGEXTID2PATHID" "KEGGGO2ENZYMEID"

[9] "KEGGMAPCOUNTS""KEGGPATHID2EXTID" "KEGGPATHID2NAME" "KEGGPATHNAME2ID"

或用如下命令:

help(package="KEGG.db")

ENSG00000000003.13

ENSG00000000005.5

ENSG00000000419.11

ENSG00000000457.12

ENSG00000000460.15

ENSG00000000938.11

提示:

第一步:删除已存在变量和使用命令( stringsAsFactors = FALSE )以防止出错(R often uses a concept of factors to re-encode strings. This can be too early and too aggressive. Sometimes a string is just a string.To avoid problems delay re-encoding of strings by using stringsAsFactors = FALSE when creating data.frames.)

第二步:导入数据:

e1<-read.table("clipboard",header=T,sep=',')#读取剪切板的内容即其他地方复制后,直接使用该命令调取复制的内容。

或者直接新建.txt文档,将内容复制进去:

了解一下这个包的作用 >?org.Hs.eg.db

发现我们已有的信息ensembl_id,并且得知symbol(对象)这一列表示的是基因名,由此确定答题方向, 通过ensembl_id确定gene_id,再通过gene_id确定基因名

我们在g2e和我们已知的数据a的ensembl_id不一样,区别在于最后的版本号,我们已有数据有版本号,而得到的g2e没有版本号,所以先将其版本号去掉。

x,y:用于合并的两个数据框

by,by.x,by.y:指定依据哪些行合并数据框,默认值为相同列名的列.

all,all.x,all.y:指定x和y的行是否应该全在输出文件.

sort: by指定的列是否要排序.

suffixes: 指定除by外相同列名的后缀.

incomparables: 指定by中哪些单元不进行合并.

答案为:

在最后合并两个表格除了使用merge函数,还可以使用match函数

中间的失误:

提示:使用 http://www.cbioportal.org/index.do 定位数据集: http://www.cbioportal.org/datasets

打开 http://www.cbioportal.org/ ,操作如下:

得到另一种形式的图片,但是与网页制作的图片是一致的。

提示使用: http://www.oncolnc.org/

打开提示网址:

画出和网页一致的图(图片还需进一步查资料了解)

生存分析的基本了解: http://wemedia.ifeng.com/81829327/wemedia.shtml

如果 p 值小于阈值(0.05 或 0.01),则两组生存时间有显著差异。