我正在尝试使用eulerr包来创建Venn图。我有两个列表,我想用它来创建Venn图。一个列表是第一个列表的子集。奇怪的是,eulerr似乎认为列表中有一个值。
b这对那个子集来说是独一无二的。我似乎不知道它认为哪些价值观是独一无二的。
> 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绘制Venn图时,我得到:
library(eulerr)
fit <- euler(list("A" = a, "B" = b))
plot(fit, counts = TRUE)

值得注意的是,eulerr认为对A是唯一的值的数量比我使用的值长一倍
length(which(!(a %in b)))任何帮助理解这一行为将是非常感谢!
发布于 2017-11-02 19:28:18
我知道是什么导致了这种行为,但我无法解释原因。这是因为在a和b中都有一个重复的值,而且它的值是相同的。
> 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

https://stackoverflow.com/questions/47082094
复制相似问题