VennDiagram的数据给出错误?

时间:2012-05-02 18:12:53

标签: r venn-diagram

我有以下数据:

Set1    : 82
Set2    : 44
Set3    : 56
Set4    : 53
1,2     : 27
1,3     : 37
1,4     : 30
2,3     : 22
2,4     : 14
3,4     : 19
1,2,3   : 18
1,2,4   : 13
1,3,4   : 20
2,3,4   : 11
1,2,3,4 : 11

1,2表示Set1 . intersection . Set2,依此类推......

当我尝试使用draw.quad.venn为此数据集创建一个VennDiagram时,我收到以下错误,

Error in draw.quad.venn(82, 44, 56, 53, 27, 37, 30, 22, 14, 19, 18, 13,  : 
Impossible: partial areas negative

我不明白我做错了什么?

更新:

以下是我使用的命令行:

v.all <- draw.quad.venn( 82, 44, 56, 53, 27, 37, 30, 22, 14, 19, 18, 13, 20, 11, 10, category = c( "Set1", "Set2", "Set3", "Set4" ), fill=c( "red", "blue", "orange", "green" ), cex = 0.75, cat.cex=0.85 )

有趣的是,当我使用

v <- venneuler( c( A=82, B=44, C=56, D=53, "A&B"=27, "A&C"=37, "A&D"=30, "B&C"=22, "B&D"=14, "C&D"=19, "A&B&C"=18, "A&B&D"=13, "A&C&D"=20, "B&C&D"=11, "A&B&C&D"=11 ))
plot(v)

它有效!!

enter image description here

所以现在我真的很困惑。

2 个答案:

答案 0 :(得分:1)

没有您的代码,很难提供帮助。可能由于它应该重叠的方式而无法绘制数据。也许你的数据有误?

然而,如果是代码问题,使用您的一些数据和不同的包,我可以提供替代路线:

require(venneuler)
m <- as.matrix(c(
0, 27, 37, 30,
27, 0, 22, 14,
37 ,22, 0, 19,
30,14,19,0)byrow=T,nrow=3)
v = venneuler(m)
plot(v)

给出了gives: http://i48.tinypic.com/15qdg1u.png

答案 1 :(得分:1)

代码中的约束是直截了当的。这是完全正确的;

     if (any(a1 < 0, a2 < 0, a3 < 0, a4 < 0, a5 < 0, a6 < 0, a7 < 
            0, a8 < 0, a9 < 0, a10 < 0, a11 < 0, a12 < 0, a13 < 0, 
            a14 < 0, a15 < 0)) {
            stop("Impossible: partial areas negative")
        }