韦恩图(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,如下