R 在合并的网络中,打印最初来自两个不同网络的连接
我想合并两个节点完全相同的网络。在合并的网络中,我希望以不同的颜色绘制来自不同原始网络的边。以下是我使用igraph所做的工作以及遇到的问题: 我首先将名称设置为两个原始图形,并将类型设置为边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
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"))