使用 eulerr 的精确维恩图
Accurate Venn diagrams using eulerr
我正在尝试使用 eulerr 包来创建维恩图。我有 2 个列表,我想用它们来创建维恩图。列表中的 1 个是第一个列表的子集。奇怪的是,eulerr 似乎认为 list
中存在一个值
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 绘制维恩图时,我得到:
library(eulerr)
fit <- euler(list("A" = a, "B" = b))
plot(fit, counts = TRUE)
值得注意的是,eulerr 认为 A 独有的值的数量比我使用
得到的值长一个
length(which(!(a %in b)))
如果能帮助理解此行为,我们将不胜感激!
我发现了导致此行为的原因,但无法解释原因。这是因为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
我正在尝试使用 eulerr 包来创建维恩图。我有 2 个列表,我想用它们来创建维恩图。列表中的 1 个是第一个列表的子集。奇怪的是,eulerr 似乎认为 list
中存在一个值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 绘制维恩图时,我得到:
library(eulerr)
fit <- euler(list("A" = a, "B" = b))
plot(fit, counts = TRUE)
值得注意的是,eulerr 认为 A 独有的值的数量比我使用
得到的值长一个length(which(!(a %in b)))
如果能帮助理解此行为,我们将不胜感激!
我发现了导致此行为的原因,但无法解释原因。这是因为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