python的NetworkX库可以帮助我们构建网络拓扑并实现拓扑的可视化,这对于网络研究,日常展示等都是十分的方便。不过,我发现并没有文章比较系统的介绍如何在可视化的图中展示节点和边的属性,从而让图更加的具体,直观。因此就想写一篇文章来教会大家如何在图中显示节点和边的属性。
总体思路
先说总体思路,想要展示节点和边的属性,我们需要借助如下两个函数(重点关注labels参数):
draw_networkx_labels(G, pos, labels=a dictionary used to describe what you want to show in node)
draw_networkx_edge_labels(G, pos, edge_labels=a dictionary used to describe what you want to show in edge)
draw_networkx_labels会在图中的节点上显示你通过labels参数传入的数据。
同理,draw_networkx_edge_labels则会在图中的边上显示你通过edge_labels参数传入的数据。
需要注意的是,这两个函数只显示了labels,并不会将点啊,边啊显示出来。所以,为了显示完整的拓扑,在调用以上两个函数之前,需要先调用draw(G, pos)将基础的点边拓扑先画出来,然后再调用draw_networkx_labels和draw_networkx_edge_labels来画出点的labels和边的labels。
模板代码如下:
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph()
# write your topology construction logic here
pos = nx.spring_layout(G) # choose a layout from https://networkx.github.io/documentation/latest/reference/drawing.html#module-networkx.drawing.layout
nx.draw(G, pos)
node_labels = {a dictionary contains what you want you show. Key:node_name. Value:text shown in node G.nodes[node_name]}
nx.draw_networkx_labels(G, pos, labels=node_labels)
edge_labels = {a dictionary contains what you want you show. Key:edge. Value:text shown in edge}

本文介绍了如何使用Python的NetworkX库在可视化网络拓扑时显示节点和边的属性。通过draw_networkx_labels和draw_networkx_edge_labels函数,结合draw(G, pos)绘制基础拓扑,可以展示节点的desc属性和边的name属性。通过实例,展示了当节点和边具有多个属性时如何构建并显示这些属性,以及如何显示自定义内容。"
133483206,19694862,提升JavaScript代码魅力:最佳实践与技巧,"['JavaScript', 'ECMAScript', '编程技巧', '代码优化', 'Web开发']
最低0.47元/天 解锁文章
1000

被折叠的 条评论
为什么被折叠?



