【R作图】在R中绘制韦恩图的几种方法 和 一些漂亮的venn图

  • 使用limma包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#安装limma包
#source("http://www.bioconductor.org/biocLite.R")
#biocLite("limma")
 
#载入limma包
library(limma)
hsb2 《- read.table("http://www.ats.ucla.edu/stat/R/notes/hsb2.csv", sep=',', header=T)
attach(hsb2)
hw 《- (write=60)
hm 《- (math 《=60)
hr 《- (read=60)
c3 《- cbind(hw, hm, hr)
a 《- vennCounts(c3)
vennDiagram(a, include = "both", names = c("High Writing", "High Math", "High Reading"), cex = 1, counts.col = "red")
  • 使用gplots包

1
2
3
4
5
6
7
8
9
10
11
12
13
#安装gplots包
#install.packages("gplots")
 
#载入gplots包
library(gplots)
oneName 《- function() paste(sample(LETTERS,5,replace=TRUE),collapse="")
geneNames 《- replicate(1000, oneName())
GroupA 《- sample(geneNames, 400, replace=FALSE)
GroupB 《- sample(geneNames, 750, replace=FALSE)
GroupC 《- sample(geneNames, 250, replace=FALSE)
GroupD 《- sample(geneNames, 300, replace=FALSE)
input-list(GroupA,GroupB,GroupC,GroupD)
venn(input)

 

  • 使用venneuler包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#安装venneuler包
#install.packages("venneuler")
#如果遇到rJava安装失败的问题,Ubuntu用户尝试可以通过以下方式解决
#sudo apt-get install r-cran-rjava
 
#载入venneuler包
library(venneuler)
 
m 《- data.frame(elements=c("1","2","2","2","3"), sets=c("A","A","B","C","C"))
v 《- venneuler(m)
plot(v)
 
m <- as.matrix(data.frame(A=c(1.5, 0.2, 0.4, 0, 0), B=c(0  , 0.2, 0  , 1, 0), C=c(0  , 0  , 0.3, 0, 1)))
# without weights
v 《- venneuler(m > 0)
plot(v)
# with weights
v 《- venneuler(m)
plot(v)
  • 使用VennDiagram包

1
2
3
4
5
6
#安装VennDiagram包
#install.packages("VennDiagram")
 
#载入VennDiagram包
library(VennDiagram)
venn.diagram(list(A=1:10,B=3:8,C=6:9), fill=c("red","green","blue"), alpha=c(0.5,0.5,0.5), cex=2, cat.fontface=4, fontfamily=3, filename="VennDiagram.tiff")

建议用后面三种方法,最多能画5 sets,limma方法最多只能画3 sets

 

draw.quad.venn  ( VennDiagram )

draw.quintuple.venn  ( VennDiagram )

但在2013年Nature的文章《Draft genome of the wheat A-genome progenitor Triticum urartu》中用的是这样的图,看起来不错,每个区域的大小偏差不会太大。

就是不知是怎画的。~~~

 

 

  • 参考资料

Calculates Venn and Euler Diagram
How can I generate a Venn diagram in R?
R绘图基础(五)文氏图vennDiagram
如何制作发表质量的Venn(维恩)图
Non-R Venn Diagrams

  • 还有一些有趣的Venn图

The Zen of Venn

Logic blooms with new 11-set Venn diagram

如何画漂亮的Venn图

七元维恩图

七元维恩图互动版

posted on 2013-03-25 13:45  香格里拉\(^o^)/  阅读(27140)  评论(0编辑  收藏  举报