【问题标题】:How to obtain the list of elements from a Venn diagram如何从维恩图中获取元素列表
【发布时间】:2021-01-26 09:05:12
【问题描述】:

我有一个由 3 个列表组成的维恩图,我想获取所有不同的子列表、两个列表之间的公共元素、它们的树之间以及每个列表的唯一元素。有没有办法让它尽可能简单?

AW.DL <- c("a","b","c","d")

AW.FL <- c("a","b", "e", "f")

AW.UL <- c("a","c", "e", "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"
)

【问题讨论】:

  • 函数venn.diagram()来自什么包?
  • 它来自 VennDiagram 包
  • 基本 R 函数 setdiff() 非常有用且非常简单。

标签: r venn-diagram


【解决方案1】:

我发现包VennDiagram 有一个函数calculate.overlap(),但我无法从这个函数中找到命名部分的方法。但是,如果您使用包 gplots ,则有函数 venn() 将返回交叉点属性。

AW.DL <- c("a","b","c","d")

AW.FL <- c("a","b", "e", "f")

AW.UL <- c("a","c", "e", "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"

【讨论】:

  • 好吧 OP 没有指定他们需要的输出类型。所以我假设他们只想要维恩图每个部分的元素数量。如果您使用给定列表的 OP 绘制维恩图,您会发现每个部分恰好有 1 个元素。因此,我觉得这也是我的输出产生的结果。
  • 非常感谢您的回答,但我正在寻找子列表元素的名称。抱歉,如果不清楚
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-16
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2012-04-04
相关资源
最近更新 更多