python networkx 边权重_Python/NetworkX:动态计算边权重

我有一个用networkx创建的未加权图,我想根据边出现的计数/频率计算节点之间的边的权重。图中的一条边可以出现多次,但是边出现的频率是事先不知道的。其目的是基于连接节点之间移动的权重(例如计数/频率)来可视化边缘。本质上,我想创建一个连接节点之间移动的网络流量图,并基于颜色或边缘宽度进行可视化。E、 例如,从节点0到1的边在它们之间有10个移动,而节点1到2有5个移动,所以边0-1将使用不同的边颜色/大小可视化。在

如何动态计算两个节点之间的边的权重(在用g.add_edges_from()将它们添加到图中之后),然后重新应用到我的图中进行可视化?下面是我最初用来创建图形的图形、数据和代码的示例,我尝试了一个失败的解决方案。在

图表

样本数据

簇质心(节点)cluster_label,latitude,longitude

0,39.18193382,-77.51885109

1,39.18,-77.27

2,39.17917928,-76.6688633

3,39.1782,-77.2617

4,39.1765,-77.1927

5,39.1762375,-76.8675441

6,39.17468,-76.8204499

7,39.17457332,-77.2807235

8,39.17406072,-77.274685

9,39.1731621,-77.2716502

10,39.17,-77.27

轨迹(边)

^{pr2}$

编码import csv

import networkx as nx

import

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用PythonNetworkX库来实现根据图的权重画拓扑图的功能。下面是一个简单的示例代码: ```python import networkx as nx import matplotlib.pyplot as plt # 创建图 G = nx.Graph() # 添加节点 G.add_nodes_from(['A', 'B', 'C', 'D']) # 添加边和权重 G.add_edge('A', 'B', weight=2) G.add_edge('A', 'C', weight=3) G.add_edge('B', 'C', weight=1) G.add_edge('B', 'D', weight=4) G.add_edge('C', 'D', weight=5) # 获取边的权重 edge_weights = nx.get_edge_attributes(G, 'weight') # 设置边的粗细 edge_widths = [0.1 * G[u][v]['weight'] for u, v in G.edges()] # 绘制图形 pos = nx.circular_layout(G) nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=500) nx.draw_networkx_edges(G, pos, width=edge_widths, edge_color='gray') nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_weights, font_color='red') nx.draw_networkx_labels(G, pos, font_size=16, font_family='sans-serif') # 显示图形 plt.axis('off') plt.show() ``` 在上面的代码中,我们首先创建了一个包含4个节点的图,并添加了5条带权重的边。然后,我们使用`nx.get_edge_attributes`函数获取每条边的权重,并将其存储在`edge_weights`字典中。接着,我们计算每条边的粗细,将其存储在`edge_widths`列表中。最后,我们使用`nx.draw_networkx_nodes`和`nx.draw_networkx_edges`函数绘制图形,并使用`nx.draw_networkx_edge_labels`和`nx.draw_networkx_labels`函数添加标签。 运行上面的代码,你会得到一个带权重的拓扑图,其中边的粗细代表了它们的权重大小。你可以根据需要修改节点的颜色、边的颜色和样式等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值