2012-10-26 99 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