我正在使用networkx创建graphml文件。我有并行链接,所以我正在使用MultiDiGraph函数。生成文件后,我在yED中将其打开,但没有在节点之间创建的所有连接。我仅有的连接(边)是为并行链接创建的。我意识到这是因为graphml文件的所有边缘都只有两个边缘id(“ 0”和“ 1”)。我修改了文件,并为每个边缘设置了唯一的ID。例如:
<edge id="0" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/0</data>
<data key="d2">100GE1/0/0</data>
</edge>
<edge id="1" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/1</data>
<data key="d2">100GE1/0/1</data>
</edge>
<edge id="2" source="Hostname_B" target="Hostname_C">
<data key="d1">100GE1/1/0</data>
<data key="d2">100GE1/0/0</data>
</edge>
如果我这样做,则yED一切正常。有什么办法可以修改networkx中的边缘ID? 我以为如果将像这样的属性设置为“ edge id”,就可以修改它:
g.add_edge(host,neighbor,source = intsource, destination = intdest, id=idcount)
但是我意识到它并没有改变边缘ID,只是为该边缘添加了另一个属性:
<edge id="0" source="Hostname_A" target="Hostname_B">
<data key="d1">100GE1/0/0</data>
<data key="d2">100GE1/0/0</data>
<data key="d3">1</data> <-- This is the idcount value
</edge>
答案 0 :(得分:0)
解决了这个问题。如果您需要在MultiDiGraphs中更改'edge id',则必须使用'key'属性,如下所示:
g.add_edge(host,neighbor,key=idcount) <-- idcount is an int value