gpt4 book ai didi

python-3.x - Networkx - 导出带有边缘标签、高度和宽度属性、自定义图像的 graphml

转载 作者:行者123 更新时间:2023-12-02 04:28:39 27 4
gpt4 key购买 nike

我想使用 python 自动绘制网络拓扑图。我是 python 的新手,所以请多多包涵。在做了一些研究之后,我发现我可以使用 python 创建 yEd 可以读取的 graphml 文件。我正在学习如何使用 Networkx 创建 graphml 文件。到目前为止,我能够创建节点、连接它们并向节点添加标签(这些标签将是主机名)。现在我需要知道如何将标签添加到边缘(这些标签将是接口(interface))。例如:

Topology example

如果可能的话,我想知道如何为每个节点添加自定义图像(默认情况下形状是正方形,但我想使用路由器 png 文件)。如果不可能,那么知道如何编辑形状的高度和宽度以及禁用箭头会很有帮助。我查看了 networkx 网站上的文档,但我还没有找到如何直接对图形对象进行这些更改。我看到它完成的唯一方法是绘制图形,例如使用以下函数:nx.draw_networkx_labels(G, pos, labels, font_size=15, arrows=False),但这不是我需要的,因为这未保存到 graphml 文件中。如果有人可以指导我解决这个问题,那将非常有帮助,我附上了我的代码:

import networkx as nx
import matplotlib
import matplotlib.pyplot as plt

g = nx.DiGraph()

g.add_node('Hostname_A')
g.add_node('Hostname_B')
g.add_node('Hostname_C')
g.add_node('Hostname_D')

g.add_edge('Hostname_A','Hostname_B')
g.add_edge('Hostname_A','Hostname_C')
g.add_edge('Hostname_B','Hostname_D')
g.add_edge('Hostname_B','Hostname_C')

for node in g.nodes():
g.node[node]['label'] = node

nx.readwrite.write_graphml(g, "graph.graphml")

最佳答案

这是解决方案:

for edge in g.edges(): 
g.edges[edge]['source'] = 'int gi0/0/0'
g.edges[edge]['destination'] = 'int gi0/0/1'

关于python-3.x - Networkx - 导出带有边缘标签、高度和宽度属性、自定义图像的 graphml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51048833/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com