python networkx 边权重_科学网—NetworkX:关于边的权重及其画图 - 胡海华的博文

这两天因为有个想法,想用NetworkX跑一跑看看情况,但是在权重上犯了糊涂。

NetworkX添加带有权重的边很简单,只需要以三个元素的元组(a, b, w)来表示就可以了,其中ab代表节点a和b——这两个元素合在一起就代表两个节点连接的边,w则代表权重。

我想生成一个BA网络,然后对每条边随机赋予边权重。生成BA网络很简单,一个命令就搞定。但是怎么往里面加权重呢?琢磨了半天才发现可以这样做:

G=nx.Graph()

for u, v in nx.barabasi_albert_graph(10,2,seed=1).edges():

G.add_edge(u,v,weight=random.uniform(0,0.4))

解决赋权重后,怎么提取权重做计算和画图呢?NetworkX提供了一个命令get_edge_data来获取其权重,但是是以字典的形式来表示的:{'weight': 0.3232300003}

我就用了个笨方法,把这个字典中的value值提取出来再来用:

pos=nx.spring_layout(G,iterations=20)

edgewidth=[]

for (u,v,d) in G.edges(data=True):

edgewidth.append(round(G.get_edge_data(u,v).values()[0]*20,2))

#这里因为权重赋值太小,生成图的话边会很细,而且不容易分辨,所以我乘以20,如果做计算的话,这个20得去掉

接下来我用这个edgewidth作为边的宽度来画图&

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值