r - 使用 eulerr 的精确维恩图

标签 r list venn-diagram eulerr

我正在尝试使用 eulerr 包来创建维恩图。我有 2 个列表,我想用它们来创建维恩图。列表中的 1 个是第一个列表的子集。奇怪的是,eulerr 似乎认为列表中存在一个值

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)

enter image description here

值得注意的是,eulerr 认为 A 独有的值的数量比我使用的值多一个

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 

enter image description here

关于r - 使用 eulerr 的精确维恩图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47082094/

相关文章:

r - 如何在r中从两个双向表创建一个三向表

r - 维恩图的问题?

javascript - D3.js 维恩图文本标签

Python 打印带有嵌套在字典中的列表的格式化文本

java - 如何根据java中的双引号分隔符将多个List<String>元素合并为一个

R Plot 指定时间刻度线的数量 - 时间/日期相当于漂亮

r - 如何在R中使用cbind合并两个csv?

R直接从网络导入excel文件

Python 列表理解返回错误标签