如何从维恩图中获取元素列表

问题描述

我有一个由 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"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...