将两个图形合并为一个(添加边)

时间:2019-03-08 12:40:56

标签: r igraph

我是R的新手,这个问题可能很容易。但是我自己找不到答案。

我有两个边缘列表共享公共节点。我想将它们放在一张图中。但是我希望,如果node1和node2在EL1和EL2中都具有边,那么它们之间会有两条线。并且这两行应使用不同的颜色,表明它们来自不同的边缘列表。

我已经尝试过graph.union(),但是,即使我在graph中有两次Node1-> Node2,它也只显示一次。

1 个答案:

答案 0 :(得分:1)

由于具有边列表,因此只需rbind就可以为组合图制作一个大的边列表。您可以根据边缘的来源为边缘分配颜色。由于您不提供任何数据,因此我举一个简单的例子进行说明。

library(igraph)

## Example data
EL1 = matrix(c("A", "B", "B", "C", "C", "D", "D", "A"), ncol=2, byrow=T)
g1 = graph_from_edgelist(EL1)
EL2 = matrix(c("A", "B", "B", "E", "E", "A"), ncol=2, byrow=T)
g2 = graph_from_edgelist(EL2)

## Combine the graphs
BigEL = rbind(EL1, EL2)
BigG = graph_from_edgelist(BigEL)
Col = c("red", "blue")[c(rep(1, nrow(EL1)), rep(2, nrow(EL2)))]
plot(BigG, edge.color=Col)

Combined Graph