韦恩图

时间:2022-07-22
本文章向大家介绍韦恩图,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

韦恩图(venn)又称文氏图,是科研文章中最常见的图,可以用来表示多个数据集之间的关系。当然也可以进行集合运算。一般用于展示2-5个集合之间的交并集关系。集合数目更多时,将会比较难分辨,更多集合的展示方式一般使用upSetView。绘制韦恩图的工具有很多,这里小编先给没有任何编程基础的人推荐几款比较好用的网络工具。

1. Venn

http://bioinformatics.psb.ugent.be/webtools/Venn/

操作简单,不仅画出了韦恩图,还很贴心的给出了数据统计的结果并列出了各个部分对应的ID,且提供直接下载。缺点是颜色和大小不可调。

2. Venny

http://bioinfogp.cnb.csic.es/tools/venny/index.html

这款比较漂亮,操作也很简单,但是不能根据列表大小调整生成的圆圈大小。

3. BioVenn

http://www.biovenn.nl/index.php

BioVenn只能绘制3维及以下的韦恩图,不过圆圈的大小可以随数据集大小而变化,并且对图片的编辑选项也更多。

=========华丽的分割线============

对于掌控性要求比较高的同学,可以试着自己写R代码来绘制韦恩图。

今天我们就来重现下面这篇学术论文里面的韦恩图

Fig3为韦恩图

下面我们用R里面的VennDiagram包来重现这个图

我们这里就不用原文作者的数据了,而是随机产生了4个gene list,这四个gene list存放在sets.txt文件中,以制表符隔开

x <- readLines("sets.txt")
sets <- strsplit(x, "t")
names(sets) <- vapply(sets, function(y) y[1], character(1))
sets <- lapply(sets, "[", -1)
setname=names(sets)

BiocManager::install("VennDiagram")
library(VennDiagram)
setnum=length(sets)
venn.diagram(
  x=sets,
  category.names = names(sets),
  filename = 'venn_diagramm.tiff',
  
  print.mode=c("raw","percent"),
  sigdigs=1,
  
  #控制输出图片的大小和分辨率
  height = 600 , 
  width = 600 , 
  resolution = 300,
  
  #控制圆圈
   lwd = 0.8,
   #lty = 'blank', #这行可以控制有没有圆圈的边框
   fill = rainbow(setnum),

  #控制圆圈中的数字
   cex = 0.3,   #字体大小
   #fontface = "bold",   #粗体
   #fontfamily = "sans",

  #控制set的名字
   cat.cex = 0.4,   #字体大小
   #cat.fontface = "bold",   #粗体
   #cat.fontfamily = "sans",  #字体
   cat.col=rainbow(setnum)   #set名字的颜色
)

运行完代码会得到如下结果

这里小编还输出了每一个交集的基因名称

对于超过5个集合的情况,维恩图展示起来其实比较乱,小编比较推荐使用R的UpSetR包来画Upset plot,如下