R 在合并的网络中,打印最初来自两个不同网络的连接

R 在合并的网络中,打印最初来自两个不同网络的连接,r,networking,plot,igraph,R,Networking,Plot,Igraph,我想合并两个节点完全相同的网络。在合并的网络中,我希望以不同的颜色绘制来自不同原始网络的边。以下是我使用igraph所做的工作以及遇到的问题: 我首先将名称设置为两个原始图形,并将类型设置为边 g1 = set.graph.attribute(g1, "name", “AA”) E(g1)$type = “A” g2 = set.graph.attribute(g2, "name", “BB”) E(g2)$type = “B” 然后,我将这两个图合并起来 g = graph.union(g1

我想合并两个节点完全相同的网络。在合并的网络中,我希望以不同的颜色绘制来自不同原始网络的边。以下是我使用igraph所做的工作以及遇到的问题:

我首先将名称设置为两个原始图形,并将类型设置为边

g1 = set.graph.attribute(g1, "name", “AA”)
E(g1)$type = “A”
g2 = set.graph.attribute(g2, "name", “BB”)
E(g2)$type = “B”
然后,我将这两个图合并起来

g = graph.union(g1, g2, byname=TRUE)
这里有一个错误:

.igraph.graph.union.or.intersectionR\u igraph\u union,…,byname=byname,…,中存在错误: 有些图没有命名

事实上,两个原始图都被命名为。这个错误有点奇怪。我继续使用以下代码。现在它起作用了

g = graph.union(g1, g2, byname="auto")
以下是我得到的一些结果:

E(g1)
边序列: 5-1[2]6-1[3]4-2[4]6-5

边序列: 3-2[2]6-2[3]5-4[4]6-4[5]6-5

边序列: 6-5[2]6-4[3]5-4[4]6-2[5]4-2[6]3-2[7]6-1[8]5-1

A

B B B B B

不,不,不,不

B B B NA B NA NA

我尝试使用以下代码绘制A型为红色的边和B型为蓝色的边

plot(g, edge.color=ifelse(E(g)$type_1=="A","red","blue"))
它只是用类型B绘制边。为什么用类型A绘制边?这些代码怎么了

我还想知道是否有办法将united graph的edge属性的名称保持为type。在这里,它会自动将名称更改为类型_1和类型_2,这是两个属性。如果保留名称,一些边将是类型A,come将是B,一些边将同时是A和B,如本例中的边5-6。这样可以更容易地以不同的颜色绘制边


任何帮助都将不胜感激。提前谢谢你

发生第一个错误是因为我猜您的图的顶点没有name属性。请对这两个图尝试类似的操作,并指定顶点的name属性Vg1$nameI。它起作用了。谢谢。在合并两个图时,它仍然没有合并边的属性。它创建类型_1和类型_2。我也在寻找一种方法或函数来实现这一点,但如果您希望每对节点之间只有一条边的话。你可以自己做,比如$type,还有一件我忘了添加的东西,如果你的图有相同的节点,就用Vg1$name
E(g)
E(g1)$type
E(g2)$type
E(g)$type_1
E(g)$type_2
plot(g, edge.color=ifelse(E(g)$type_1=="A","red","blue"))