python绘制带有权重的网络_python networkx根据图的权重画图代码方法

python networkx 根据图的权重画图实现

首先输入边和边的权重,随后画出节点位置,根据权重大小划分实边和虚边

#coding:utf-8

#!/usr/bin/env python

"""

An example using Graph as a weighted network.

"""

__author__ = """Aric Hagberg (hagberg@lanl.gov)"""

try:

import matplotlib.pyplot as plt

except:

raise

import networkx as nx

G=nx.Graph()

#添加带权边

G.add_edge('a','b',weight=0.6)

G.add_edge('a','c',weight=0.2)

G.add_edge('c','d',weight=0.1)

G.add_edge('c','e',weight=0.7)

G.add_edge('c','f',weight=0.9)

G.add_edge('a','d',weight=0.3)

#按权重划分为重权值得边和轻权值的边

elarge=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] >0.5]

esmall=[(u,v) for (u,v,d) in G.edges(data=True) if d['weight'] <=0.5]

#节点位置

pos=nx.spring_layout(G) # positions for all nodes

#首先画出节点位置

# nodes

nx.draw_networkx_nodes(G,pos,node_size=700)

#根据权重,实线为权值大的边,虚线为权值小的边

# edges

nx.draw_networkx_edges(G,pos,edgelist=elarge,

width=6)

nx.draw_networkx_edges(G,pos,edgelist=esmall,

width=6,alpha=0.5,edge_color='b',style='dashed')

# labels标签定义

nx.draw_networkx_labels(G,pos,font_size=20,font_family='sans-serif')

plt.axis('off')

plt.savefig("weighted_graph.png") # save as png

plt.show() # display

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持码农之家。

以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

  • 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、付费专栏及课程。

余额充值