How to find which elements related to which parts of venn diagram using calculate.overlap function in r?

你。 提交于 2019-12-20 06:08:22

问题


The output of calculate.overlap is not clear. There are some names for each position of venn diagram such as: $a1 , $a2 , ... It becomes so complicated when we draw it for five list. How to recognize which names ($a1 , $a2 , ...) related to the overlap of which lists?

library(VennDiagram)

overlap=calculate.overlap(
    x=list(
        "A"=c("a","b","c"),
        "B"=c("a","b","c","d"),
        "C"=c("a","c","d")
    )
)

and this is the output:

$a5
[1] "a" "c"

$a2
[1] "b"

$a4
character(0)

$a6
[1] "d"

$a1
character(0)

$a3
character(0)

$a7
character(0)

How to replace these names with the names of my list?

My expected output is:

$A,B,C
[1] "a" "c"

$A,B
[1] "b"

$A,C
character(0)

$B,C
[1] "d"

$A
character(0)

$B
character(0)

$C
character(0)

回答1:


There is an answer here. However, I do not claim to understand it. The general rule to order the regions in a Venn diagram is to use a binary representation of it. My nVennR package uses that representation and can give you a quick answer for any number of sets:

> library(nVennR)
> myV <- plotVenn(list("A"=c("a","b","c"), "B"=c("a","b","c","d"), "C"=c("a","c","d")), showPlot = F)
> listVennRegions(myV)
$`0, 1, 1 (B, C)`
[1] "d"

$`1, 1, 0 (A, B)`
[1] "b"

$`1, 1, 1 (A, B, C)`
[1] "a" "c"

> listVennRegions(myV, na.rm = F)
$`0, 0, 0 ()`
[1] NA

$`0, 0, 1 (C)`
[1] NA

$`0, 1, 0 (B)`
[1] NA

$`0, 1, 1 (B, C)`
[1] "d"

$`1, 0, 0 (A)`
[1] NA

$`1, 0, 1 (A, C)`
[1] NA

$`1, 1, 0 (A, B)`
[1] "b"

$`1, 1, 1 (A, B, C)`
[1] "a" "c"

There is a vignette with more details on usage.



来源:https://stackoverflow.com/questions/55560381/how-to-find-which-elements-related-to-which-parts-of-venn-diagram-using-calculat

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!