我有以下数据:
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)
它有效!!
所以现在我真的很困惑。
答案 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)
答案 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")
}