我试图了解venneuler
的工作原理,并输出一个我不希望的维恩图。当我试图理解某些东西时,我喜欢用简单的例子。我正在提供我认为的矩阵:
逻辑或数字矩阵,其列表示集合和 共现是 由行中的非零(rep.TRUE)值定义(行的权重为1表示 逻辑矩阵或数字矩阵的行和)。 - 手册 -
我希望如果两个东西在同一行中都有1个或0个,那么他们的venn就会重叠。所以在这个矩阵中,w和z没有共同的1或0。我希望他们的维恩不会重叠但他们会这样做(见下图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
以上代码:
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 :(得分:5)
尝试这些 - 与?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)))
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)))
有任何显着差异吗?没有为什么?因为第二种情况是不可能的!想象一下,3个面积= 1的圆圈中的任何2个如何具有面积= 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");