Networkx-如何更改边缘ID?

时间:2018-06-27 22:15:19

标签: python networkx graphml

我正在使用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>

1 个答案:

答案 0 :(得分:0)

解决了这个问题。如果您需要在MultiDiGraphs中更改'edge id',则必须使用'key'属性,如下所示:

g.add_edge(host,neighbor,key=idcount) <-- idcount is an int value