Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unexpected venneuler output

Tags:

r

venn-diagram

I'm trying to understand how venneuler works and it outputs a venn diagram I wouldn't expect. I like to work with simple examples when I'm trying to understand something. I'm supplying the matrix below which I believe is :

a logical or numeric matrix whose columns represent sets and co-occurrence is defined by non-zero (rep. TRUE) values in rows (weight for a row being 1 for logical matrices or the row sum for numeric matrices). -venneular manual-

I would expect if two things both have 1's or 0's in the same row they'd have overlap in their venn. So in this matrix w and z have no 1's or 0's in common. I'd expect their venn's not to overlap but they do (see figure 1 below). Why? If I'm supplying wrong information or it needs to be reformatted please explain. If it's in the calculations of venneular please explain that.

     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

The code for the above:

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)
like image 647
Tyler Rinker Avatar asked Oct 26 '12 00:10

Tyler Rinker


1 Answers

Try these - same as the example of ?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

Any significant difference? No. Why? because the second case is impossible! Imagine how any 2 of 3 circles of area = 1 have intersection of area = 0.5, but there is nothing in the intersection of all 3?

Now if you like to have a good representation of your desired matrix, I suggest using VennDiagram package:

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

like image 127
Ali Avatar answered Oct 28 '22 23:10

Ali