0

次のデータがあります。

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します...

を使用してこのデータセットの VennDiagram を作成しようとするとdraw.quad.venn、次のエラーが発生します。

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)

できます!!

ここに画像の説明を入力

だから今、私は本当に混乱しています。

4

2 に答える 2

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)

を与える与えます:

于 2012-05-02T19:09:43.667 に答える
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")
        }
于 2012-05-31T22:20:40.700 に答える