问题描述
我有一个由 3 个列表组成的维恩图,我想获得所有不同的子列表、两个列表之间、它们的树之间的公共元素以及每个列表的唯一元素。有没有办法让它尽可能直截了当?
AW.DL <- c("a","b","c","d")
AW.FL <- c("a","e","f")
AW.UL <- c("a","g")
venn.diagram(
x = list(AW.DL,AW.FL,AW.UL),category.names = c("AW.DL","AW.FL","AW.UL" ),filename = '#14_venn_diagramm.png',output=TRUE,na = "remove"
)
解决方法
我发现包 VennDiagram
有一个函数 calculate.overlap()
,但我无法找到一种方法来命名该函数中的部分。但是,如果您使用包 gplots
,则有函数 venn()
将返回交叉点属性。
AW.DL <- c("a","b","c","d")
AW.FL <- c("a","e","f")
AW.UL <- c("a","g")
library(gplots)
lst <- list(AW.DL,AW.FL,AW.UL)
ItemsList <- venn(lst,show.plot = FALSE)
lengths(attributes(ItemsList)$intersections)
输出:
> lengths(attributes(ItemsList)$intersections)
A B C A:B A:C B:C A:B:C
1 1 1 1 1 1 1
要获取元素,只需打印attributes(ItemsList)$intersections
:
> attributes(ItemsList)$intersections
$A
[1] "d"
$B
[1] "f"
$C
[1] "g"
$`A:B`
[1] "b"
$`A:C`
[1] "c"
$`B:C`
[1] "e"
$`A:B:C`
[1] "a"