R中提供了多個可用于繪制韋恩圖的軟件包,本文主要是介紹的是VennDiagram包。 安裝VennDiagram包: install.packages("VennDiagram") 首先加載相應(yīng)的軟件包: library(VennDiagram) 生成幾個集合并計算各個集合及其相互交集的大小: A = 1:150 B = c(121:170,300:320) C = c(20:40,141:200) Length_A<-length(A) Length_B<-length(B) Length_C<-length(C) Length_AB<-length(intersect(A,B)) Length_BC<-length(intersect(B,C)) Length_AC<-length(intersect(A,C)) Length_ABC<-length(intersect(intersect(A,B),C)) 利用通用函數(shù)venn.diagram繪制兩個集合的韋恩圖: T<-venn.diagram(list(A=A,B=B),filename=NULL ,lwd=1,lty=2 ,col=c("red","green"),fill=c("red","green") ,cat.col=c("red","green") ,rotation.degree=90) grid.draw(T) 其中,參數(shù)filename指定用于保存圖形文件的文件名,如果希望在當(dāng)前的圖形窗口中看到繪制的韋恩圖,則filename必須為空;若希望將繪制的圖 形直接保存為某文件,則直接使用venn.diagram(...,filename="*")即可完成。參數(shù)fill表示各個集合對應(yīng)的圓的填充顏 色,col表示對應(yīng)的圓周的顏色,而cat.col則表示集合名稱的顯示顏色。lwd用于設(shè)定圓弧的寬度,lty用于設(shè)定圓弧的線型。參數(shù) rotation.degree則可用于調(diào)整圖形的旋轉(zhuǎn)角度。 利用函數(shù)venn.diagram繪制三個集合的韋恩圖: T<-venn.diagram(list(A=A,B=B,C=C),filename=NULL ,lwd=1,lty=2,col=c("red","green","blue") ,fill=c("red","green","blue") ,cat.col=c("red","green","blue") ,reverse=TRUE) grid.draw(T) 從上面的兩個例子可以看出函數(shù)venn.diagram是利用集合作為參數(shù)繪制韋恩圖的,但是有時候我們并不知道各個集合都包含什么元素,而只知道集合及 相互之間交集的大小,這個時候如何繪制韋恩圖呢?包VennDiagram還給我們提供了另外幾個函數(shù):繪制兩個集合的韋恩圖的 draw.pairwise.venn,三個集合的draw.triple.venn,四個、五個集合的draw.quad.venn、 draw.quintuple.venn。我們此處只介紹前兩個函數(shù)的用法。 利用函數(shù)draw.pairwise.venn繪制兩個集合的韋恩圖: draw.pairwise.venn(area1=Length_A,area2=Length_B,cross.area=Length_AB ,category=c("A","B"),lwd=rep(1,1),lty=rep(2,2) ,col=c("red","green"),fill=c("red","green") ,cat.col=c("red","green") ,rotation.degree=90) 其中area1指第一個集合的大小,area2指第二個集合的大小,而cross.area則指交集的大小。參數(shù)category用于指定集合名稱。其余參數(shù)與venn.diagram相同。 利用函數(shù)draw.triple.venn繪制三個集合的韋恩圖: draw.triple.venn(area1=Length_A, area2=Length_B, area3=Length_C ,n12=Length_AB, n23=Length_BC, n13=Length_AC, n123=Length_ABC ,category = c("A","B","C") ,col=c("red","green","blue"),fill=c("red","green","blue") ,cat.col=c("red","green","blue") ,reverse = FALSE) 同draw.pairwise.venn類似,area1、area2、area3分別指第一個、第二個、第三個集合的大小。n12表示第一個與第二個集合的交集大小,n23、n13也是類似,n123指三個集合的交集大小。reverse則指是否對圖形進(jìn)行反轉(zhuǎn)。 原文來自:http://liuwei441005.blog.163.com/blog/static/135705811201310152376766/ 生物信息學(xué)交流論壇 http://bbs./forum-76-1.html |
|