网络x节点之间的固定/松散距离

时间:2020-09-02 15:16:11

标签: python-3.x networkx topology

我想代表一个计算机网络。设备具有多个连接到另一个设备端口的端口。例如,在这里您看到设备1/1/1的端口a连接到设备1/1/1的端口b。到目前为止,一切都很好...

enter image description here

现在我想将节点的端口(实际关闭)粘在一起(以使节点与其端口之间的距离为零)。但是端口之间的距离应该是宽松的。请记住,我的网络中的portsnodes在networkx抽象中都表示为nodes ...

到目前为止,我已经通过控制边缘的权重(通过将节点及其端口链接在一起)并分配较高的值来实现这一目标。

G.add_edge(node,node_port[0], w=2000)

我以后可以使用pos = nx.spring_layout(G, weight='w')读取该值。但是无论w有多大,我都无法达到节点和端口之间的零距离。

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

运行时:

pos = nx.spring_layout(G, weight='w')

您将获得一个字典,其中的键是节点,值是2D坐标。您可以使用它来创建一个新的词典,如果我对您的理解正确的话,可以在其中手动用其设备的端口位置覆盖端口位置。

特别是:

  1. 初始化新字典pos2
  2. 在节点上循环:如果节点是设备,则在pos中查找其坐标并将其添加到pos2。如果该节点是端口,请在pos中查找其相应设备的坐标,然后使用这些坐标将端口节点添加到pos2

然后调用nx.draw,将pos2作为节点的位置。希望这很清楚,我希望您能正确理解。