Venn图可以展示多个样本/分组某种属性共有和特有的部分,如OTU,基因等。由此可以观察样本/分组的相似程度。在R语言中有很多拓展包可以画Venn图,使用方法大致相同,下面介绍一下用VennDiagram包画venn图。
没有安装VennDiagram包可以使用install.packages来安装。
library(VennDiagram) #调用VennDiagram包
#产生2个随机样本
A=sample(0:30,20) # 18 12 27 8 1 23 25 7 24 9 29 15 4 14 3 11 22 10 2 26
B=sample(0:30,20) #28 0 24 19 21 5 6 29 22 1 30 3 23 16 10 4 2 25 26 20
venn.diagram(list(A=A,B=B),'test.tiff') #画venn图
到这里简单的venn图就完成了,如下图:
上面的这张图可能过于简单,venn.diagram还提供了大量的参数来美化你的venn图。
venn.diagram(list(A=A,B=B), #数据,不能大于5组
imagetype='png', #输出文件的类型 (tiff, png or svg)
filename ='test.tiff', # 输出文件名
fill=c('red','blue'), #选择分组颜色
main='test',
main.pos=c(0.5, 1),
main.cex=2.5) #标题,位置,大小
效果如下:
调节字体,文字颜色等参数可通过查看venn.diagram帮助来获取。
通过venn图可以得到共有,特有的数量,有时我们还需要得到具体的数据,这里我们可以用集合操作。
intersect(A,B) #AB共有元素
#1 23 25 24 29 4 3 22 10 2 26
setdiff(A,B) # A 特有部分
# 18 12 27 8 7 9 15 14 11
setdiff(B,A) #B 特有的部分
# 28 0 19 21 5 6 30 16 20