韦恩图的绘制及交集元素的提取(R包VennDiagram)
卖萌控的博客
点击这里进入电脑版页面!体验更好
韦恩图的绘制及交集元素的提取(R包VennDiagram)
2022-6-28 萌小白


韦恩(Venn)图是常见统计图之一,用于展示各样本(或分组)之间共有(或特有)元素的数量(或比例)。



例如做RNA-seq的最直接目的,大多是鉴定差异表达的基因。当试验涉及到多分组情况时,常需要展示多组间共享的差异基因数量,这个时候就要使用到韦恩Venn图。例如以下示例,植物组织中响应7天氮缺乏(-N_7d)、7天磷酸盐缺乏(-Pi_7d)和盐胁迫(d)、冷胁迫(e)或干旱胁迫(f)的差异表达lncRNA的Venn图。



文献中的韦恩图示例



文献中通常提到,这些Venn图一般通过一些R包(如VennDiagram)来做。



本篇教程,就让小编带您学习如何使用R包VennDiagram绘制Venn图,以及如何统计各组元素的交集。



1.准备作图数据



首先准备输入数据。既然期望比较各组共有/特有元素,那么就可以将各组中所包含的元素提取出来,粘贴到一个新的列表中。



如下图示例,一共包含4个分组,group1-4,下方是各组中所包含的元素名称。各列不等长没关系,某一列内有重复的值也没关系,后续读到R中后能够自动识别并去除空值或重复值。



韦恩图作图文件内容样式



2.R包VennDiagram的韦恩图绘制



接下来,将该文件读到R中,绘制Venn图。



VennDiagram包中的函数venn.diagram(),可以直接基于原始数据自动统计并绘制Venn图。



!!!**************************************************



#韦恩图(VennDiagram 包,适用样本数 2-5)



library(VennDiagram)



#读入作图文件,all.txt即上述提到的记录group1-4的元素名称的文件



dat <- read.table('all.txt', header = TRUE, sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)



#以2个分组为例



#指定统计的分组列,并设置作图颜色、字体样式等



venn_list <- list(group1 = dat$group1, group2 = dat$group2)



venn.diagram(venn_list, filename = 'venn2.png', imagetype = 'png',



fill = c('red', 'blue'), alpha = 0.50, cat.col = rep('black', 2),



col = 'black', cex = 1.5, fontfamily = 'serif',



cat.cex = 1.5, cat.fontfamily = 'serif')



!!!**************************************************



两组交集韦恩图



工作路径下输出一张图片“venn2.png”,打开就是绘制的Venn图。



这是展示的两组的,再展示一个四组比较的。



!!!**************************************************



#以4个分组为例



#指定统计的分组列,并设置作图颜色、字体样式等



venn_list <- list(group1 = dat$group1, group2 = dat$group2, group3 = dat$group3, group4 = dat$group4)



venn.diagram(venn_list, filename = 'venn4.png', imagetype = 'png',



fill = c('red', 'blue', 'green', 'orange'), alpha = 0.50,



cat.col = c('red', 'blue', 'green', 'orange'), cat.cex = 1.5, cat.fontfamily = 'serif',



col = c('red', 'blue', 'green', 'orange'), cex = 1.5, fontfamily = 'serif')



!!!**************************************************



四组交集韦恩图



同样地,工作路径下输出一张图片“venn4.png”,打开就是绘制的Venn图。



3.关于交集元素的提取方法



以上自动读取原始数据,并统计各组之间的交集状态,获取共有元素的数量信息后,绘制Venn图,整个过程一气呵成。



但是,如果期望获得各组之间的交集元素具体包含哪些,并将这些交集元素的名称输出出来,应该怎样做呢?



VennDiagram包中的函数get.venn.partitions()可以实现这个功能,参考以下示例。



!!!**************************************************



#继续以上述4个分组为例,组间交集元素获得



inter <- get.venn.partitions(venn_list)



for (i in 1:nrow(inter)) inter[i,'values'] <- paste(inter[[i,'..values..']], collapse = ', ')



write.table(inter[-c(5, 6)], 'venn4_inter.txt', row.names = FALSE, sep = '\t', quote = FALSE)



!!!**************************************************



输出交集元素名称



工作路径下输出文件“venn4_inter.txt”,可以用Excel打开。



group1-4中,TRUE代表该组中出现的元素,FALSE则代表未出现的元素。



count为交集元素数量,values为交集元素名称。












注:!!!*******之间为R脚本内容。


转自:纪伟讲测序
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容