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

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

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}
这段代码的作用是对一些变量进行索引筛选操作。 假设以下变量是已定义的: - `node_outputs`: 表示节点的输出结果 - `output_loss`: 表示输出的损失值 - `edge_prob`: 表示的概率 - `edge_labels`: 表示标签 - `labels`: 表示节点标签 其中,`test_mask`、`test_label_index` `test_edge_ids` 是用于进行索引筛选的掩码或索引。 代码中的每一行都是对相应的变量进行索引筛选操作,并将结果赋值给相同的变量名,以更新变量的值。 具体解释如下: - `node_outputs[test_mask][test_label_index]`:对节点输出结果进行两次索引操作,首先根据 `test_mask` 对节点进行筛选,然后根据 `test_label_index` 对筛选后的节点进行进一步的索引。最终得到筛选后的节点输出结果。 - `output_loss[test_mask][test_label_index]`:对输出损失值进行类似的筛选索引操作,得到筛选后的输出损失值。 - `edge_prob[test_edge_ids]`:根据 `test_edge_ids` 对的概率进行索引,得到筛选后的概率。 - `edge_labels = test_edge_labels.cuda()`:将 `test_edge_labels` 转移到 GPU 上。 - `labels[test_mask][test_label_index]`:对节点标签进行筛选索引操作,得到筛选后的节点标签。 这段代码的目的是根据特定的条件对各个变量进行筛选索引,以获取所需的子集或特定位置的值。这些操作可能是为了进一步处理或分析数据,或者用于后续的计算模型训练过程。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值