此问题已在github提交,就像6个月前一样,但由于尚未修复,我想知道是否有一个我错过的快速修复。
我想根据名称合并两个图表:
g1 = igraph.Graph()
g2 = igraph.Graph()
# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])
for vertex in g1.vs:
print vertex.index
0
1
for vertex in g2.vs:
print vertex.index
0
1
2
然而,当我执行联合时,igraph使用顶点ID而不是名称,因此我最终得到三个顶点而不是四个(如果它基于名称)。我想这是因为B
在0
中有索引g2
,因此它与A
的{{1}}合并。以类似的方式,g1
C
与g2
的{{1}}合并。
B
有关如何绕过此问题的任何想法?这是可能的,因为它是在igraph的R实现中完成的。
答案 0 :(得分:0)
只需创建一个新图形,然后按名称添加顶点。当然,这会消除其他节点属性,您也必须手动添加这些属性。
g1 = igraph.Graph()
g2 = igraph.Graph()
# add vertices
g1.add_vertices(["A","B"])
g2.add_vertices(["B","C","D"])
g3 = igraph.Graph()
verts_to_add = []
for v in g1.vs:
if v['name'] not in verts_to_add:
verts_to_add.append(v['name'])
for v in g2.vs:
if v['name'] not in verts_to_add:
verts_to_add.append(v['name'])
g3.add_vertices(verts_to_add)
for v in g3.vs:
print(v['name'])
#A
#B
#C
#D