2012-04-11 70 views
3

我試圖讓一個4路維恩圖中R. 我有這個數據,我希望把圖中:R中的四維維恩圖?

enter image description here

誰能給我一個建議,怎麼辦呢?我嘗試使用函數vennDiagram()但不起作用,因爲它是一個4way圖。

我也試圖使用包VennDiagram,但真正混淆了數據被「分配」到圖中正確位置的方式。我正在使用這個代碼:

library (VennDiagram) 
venn.diagram(
    x=list(
    I=c(1:18,19:31,32:119,125:129,130:192,193:144,145:326,327:373), 
    VI=c(516:542,510:515,420:497,498:509,145:326,327:373,130:192,193:144), 
    II=c(19:31,32:119,145:326,327:373,374:378,378:419,420:497,498:509), 
    III=c(506:509,378:419,32:119,125:129,130:192,145:326,420:497,510:515) 
    ), 
    filename = "4Way_Venn.tiff", 
    col = "black", 
    lty = "dotted", 
    lwd = 4, 
    fill = c("cornflowerblue", "green", "yellow", "darkorchid1"), 
    alpha = 0.50, 
    label.col = c("orange", "white", "darkorchid4", "white", "white", "white", 
        "white", "white", "darkblue", "white", "white", "white", 
        "white", "darkgreen", "white"), 
    cex = 2.5, 
    fontfamily = "serif", 
    fontface = "bold", 
    cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"), 
    cat.cex = 2.5, 
    cat.fontfamily = "serif" 
    ); 

任何人都可以幫助我嗎?也許使用更簡單的解決方案,然後使用VennDiagram軟件包。

+0

不Vennerable對於R支持嗎?我使用Python和gnuplot編寫了一個解決方案。樂於分享。 – 2013-07-16 15:27:27

回答

3

我可能在這裏錯過了一點,但我不確定你想如何使用這些「計數」來製作你的維恩圖?

require(venneuler) 
#here I replicate your data 
#because it's repeatable, you can use `rep` function to generate it 
c1 <- rep(c(0,1),each=8) 
c2 <- rep(c(0,1),each=4,times=2) 
c3 <- rep(c(0,1),each=2,times=4) 
c4 <- rep(c(0,1),times=8) 
#put your data into matrix 
m <- as.matrix(data.frame(C1=c1,C2=c2,C3=c3,C4=c4)) 
#plot it 
v = venneuler(m) 
plot(v) 

enter image description here

+2

Counts是每種情況發生的次數,它是數據的彙總,它應該在圖中。例如,在數據中有26次,所有的c1,c2,c3和c4的值都是0 – Peiska 2012-04-11 19:27:09

+0

@Peiska:好吧,我明白你的意思了。當我有更多時間時,會嘗試修改它。 – 2012-04-12 11:26:25

+0

我不認爲這解決了這個問題,但也許http://stackoverflow.com/questions/30638610/how-to-draw-venn-diagram-using-6-sets/31148761#31148761會有所幫助。 – timelyportfolio 2015-07-01 01:40:28

3

只是要小心:從列「C1」到「C4」,你可以使用venneuler包很容易讓維恩圖我試圖建立4(或更高版本)十字維恩圖中支持這種能力的情侶套裝,並且在至少一種情況下子空間未被正確地繪製。例如,完全包含在另一個子集中的一個子集的一部分區域延伸到父子集之外。不幸的是,我不記得哪個軟件包做到了。
所以,我的回答是:嘗試venneuler作爲GOA說,嘗試require(sos); ???venn,並務必仔細測試每個包,以確保它正確渲染交叉 。