簡體   English   中英

使用歐拉的精確維恩圖

[英]Accurate Venn diagrams using eulerr

我正在嘗試使用 eulerr 包來創建維恩圖。 我有 2 個列表,我想用它們來創建維恩圖。 列表中的第一個是第一個的子集。 奇怪的是,歐拉似乎認為列表中存在一個值

b

這是該子集獨有的。 我似乎無法弄清楚它認為哪些值是獨一無二的。

https://pastebin.com/J7tPcfAt

> length(a)
[1] 3278

> length(b)
[1] 1318

當我檢查子集之間的重疊時,我得到了預期的結果:

> length(which(a %in% b))
[1] 1318

> length(which((b %in% a)))
[1] 1318

> length(which(!(b %in% a)))
[1] 0

> length(which(!(a %in% b)))
[1] 1960

但是當我使用 eulerr 繪制維恩圖時,我得到:

library(eulerr)
fit <- euler(list("A" = a, "B" = b))
plot(fit, counts = TRUE)

在此處輸入圖片說明

值得注意的是,歐拉認為 A 獨有的值的數量比我使用的要長 1

length(which(!(a %in b)))

任何幫助理解這種行為將不勝感激!

我發現了導致這種行為的原因,但我無法解釋原因。 這是因為ab中都有重復的值,而且是相同的值。

> a[duplicated(a)]
[1] "Crybg3"
> b[duplicated(b)]
[1] "Crybg3"

如果我從兩個向量中刪除這個值,它就可以工作。

a1 <- a[!duplicated(a)]
b1 <- b[!duplicated(b)]

fit <- euler(list("A" = a1, "B" = b1))
plot(fit, counts = TRUE)

> fit
    original fitted residuals region_error
A       1960   1960         0            0
B          0      0         0            0
A&B     1317   1317         0            0

diag_error:  0 
stress:      0 

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM