2012-10-26 187 views
5

我想了解venneuler如何工作,它輸出一個我不會指望的維恩圖。當我試圖理解某些東西時,我喜歡用簡單的例子來工作。我供給下面我認爲是矩陣:意外的venneuler輸出

邏輯或數字矩陣,它的列代表集和 共同出現是 由非零(REP TRUE。)值的行定義的(權重對於 邏輯矩陣或數字矩陣的行總和爲1的行)。 -neneular manual-

我想如果兩件事物在同一行中都有1或0,他們在他們的venn中會有重疊。所以在這個矩陣中,w和z沒有1或0的共同點。我希望他們的venn不會重疊,但他們確實(見下面的圖1)。爲什麼?如果我提供錯誤信息或需要重新格式化,請解釋。如果是在venneular的計算中,請解釋一下。

 w x y z 
[1,] 1 0 1 0 
[2,] 0 0 1 1 
[3,] 0 0 1 1 
[4,] 1 1 0 0 

https://dl.dropbox.com/u/61803503/venn.1.png

對於上面的代碼:

library(venneuler) 
w <- c(1,0,0,1) 
x <- c(0, 0, 0, 1) 
y <- c(1, 1, 1,0) 
z <- c(0, 1, 1,0) 
a <- cbind(w, x, y, z)  
v <- venneuler(a) 
plot(v) 
+0

我懷疑這是因爲> 3套,有安排不一般的方式4個圓形在平面上以滿足所有重疊約束。 (我沒有這方面的參考 - 這只是我的幾何直覺。)在'venneuler()'等背後的大部分編程。儘管沒有完全準確的解決方案,但其目標應儘可能地做好工作。 –

+0

非常可能,因爲該手冊將殘差稱爲「輸入交叉區域和擬合交叉區域之間的百分比差異」。 –

回答

4

嘗試這些 - 相同的?venneuler的例子:

library(venneuler) 
plot(venneuler(c(A=1, B=1, C=1, "A&B"=0.5, "A&C"=0.5, "B&C"=0.5 ,"A&B&C"=0.5))) 

enter image description here

plot(venneuler(c(A=1, B=1, C=1, "A&B"=0.5, "A&C"=0.5, "B&C"=0.5 ,"A&B&C"=0))) 

enter image description here

任何顯著差異?沒有爲什麼?因爲第二種情況是不可能的!想象一下,3個區域的任何2個圓圈= 1有面積= 0.5的交點,但是所有3個交點都沒有?

現在,如果你想擁有你想要的矩陣的良好表現,我建議使用VennDiagram包:

library(VennDiagram) 
w <- c(1, 0, 0, 1) 
x <- c(0, 0, 0, 1) 
y <- c(1, 1, 1, 0) 
z <- c(0, 1, 1, 0) 

venn.diagram(
    x = list(w = which(w==1),x = which(x==1),y = which(y==1),z = which(z==1)), 
    height=2000, width=2000, resolution=300, col = "transparent",margin = 0.2, 
    fill = c("cornflowerblue", "green", "yellow", "darkorchid1"), alpha = 0.50, 
    cex = 1.5,filename="~/Desktop/a.tiff",fontfamily = "serif",fontface = "bold", 
    cat.col = c("darkblue", "darkgreen", "orange", "darkorchid4"),cat.cex = 1.5, 
    cat.pos = 0,cat.dist = 0.07,cat.fontfamily = "serif",rotation.degree = 270, 
    label.col = "white"); 

enter image description here