networkx画图时显示节点和边的属性

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}
  • 47
    点赞
  • 151
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值