【问题标题】:Venn diagram of networks?网络的维恩图?
【发布时间】:2015-12-14 14:52:54
【问题描述】:

我在 R 上使用 igraph,并想创建多个网络的维恩图,以显示它们共享的边数。我还没有想出一个简单的方法来做到这一点。

例如:

> net1 <- graph.data.frame(data.frame(a=letters[1:10],b=letters[11:20]),
+                          directed=F)
> net2 <- graph.data.frame(data.frame(a=c(letters[1:5],letters[15:25]),
+                          b=c(letters[11:20],letters[c(21:26)])),
+                          directed=F)
> 
> net1_2 <- graph.intersection(net1,net2,keep.all.vertices=F)
> 
> net1
IGRAPH UN-- 20 10 -- 
+ attr: name (v/c)
> net2
IGRAPH UN-- 21 16 -- 
+ attr: name (v/c)
> net1_2
IGRAPH UN-- 15 5 -- 
+ attr: name (v/c)

然后做这样的事情,但这也可以在多个网络上工作,不仅仅是 2:

GraphsVenn(net1,net2)

如果您在想为什么我不只是绘制合并的网络并为交叉点着色,那是因为网络很大而且会一团糟。

谢谢!

【问题讨论】:

  • 我没有使用 igraph 的经验,但是还有其他用于绘制维恩图的软件包,例如 cran.r-project.org/web/packages/VennDiagram/index.html an illustration:stackoverflow.com/q/31681110
  • 谢谢弗兰克,我知道 VennDiagram,问题是 igraph 边缘不被读取为向量。所以是的,我可以简单地给出数字并绘制维恩图,但我想知道是否有更聪明的方法(我必须做多个网络的所有交叉点,这很长而且容易出错)。
  • graph.intersection(或最近称为intersection)确实适用于多个网络:igraph.org/r/doc/intersection.igraph.html
  • 嗨,加博尔!和你说话真是太棒了......感谢igraph!所以我的问题不是如何做交叉点,而是如果有一种简单的方法(即我不知道的函数)来绘制网络交叉点的维恩图。

标签: r igraph venn-diagram


【解决方案1】:

我不是 igraph 方面的专家,但我认为您可以获得一个边缘列表,这可能是我的nVennR 包的(以及其他)输入:

library(igraph)
library(nVennR)

net1 <- graph.data.frame(data.frame(a=letters[1:10],b=letters[11:20]), directed=F)
net2 <- graph.data.frame(data.frame(a=c(letters[1:5],letters[15:25]), b=c(letters[11:20],letters[c(21:26)])), directed=F)

myV <- plotVenn(list(net1=as_ids(E(net1)), net2=as_ids(E(net2))))

结果:

然后您可以查询每个区域中的元素:

> listVennRegions(myV)
$`0, 1 (net2)`
 [1] "o|p" "p|q" "q|r" "r|s" "s|t" "t|u" "u|v" "v|w" "w|x" "x|y" "y|z"

$`1, 0 (net1)`
[1] "f|p" "g|q" "h|r" "i|s" "j|t"

$`1, 1 (net1, net2)`
[1] "a|k" "b|l" "c|m" "d|n" "e|o"

这个包可以处理任意数量的集合,虽然超过六个真的很慢而且信息量不是很大。如果您有兴趣,可以通过vignette 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多