使用networkx构建图并可视化

使用networkx构建图并可视化

        最近导师让重现一篇关于时序网络流论文的实验,因此想借助一些第三方库以便更快速的写完代码,经搜索发现,networkx这个python库蛮好的,详细地址见:NetworkX。这个库实现了图论里一些常见的算法,其实真正吸引我的是这个库可以可视化你构造的图,这样就可以更直观的理解你构建的图。因为这个库我第一次用,只试了下可视化自己构建的图,代码如下:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
G.add_edge('A', 'B', weight=4)
G.add_edge('B', 'D', weight=2)
G.add_edge('A', 'C', weight=3)
G.add_edge('C', 'D', weight=5)
G.add_edge('A', 'D', weight=10)
# for u,v,d in G.edges(data=True):
#   print(u,v,d['weight'])
edge_labels=dict([((u,v,),d['weight']) for u,v,d in G.edges(data=True)])
fixed_position = {'A':[ 0.55072989,  0.00426975], 'B': [ 1.,  0.], 'D': [ 0.38252302,  0.10520343], 'C': [ 0.,0.09481996]}#每个点在坐标轴中的位置
pos=nx.spring_layout(G,pos = fixed_position)#获取结点的位置,每次点的位置都是随机的
nx.draw_networkx_edge_labels(G,pos,edge_labels=edge_labels)#绘制图中边的权重
# print(edge_labels)
nx.draw_networkx(G,pos)
plt.show()

运行结果如下:

这里写图片描述

关于这里面的几个函数的说明如下:

  • 关于spring_layout()这个函数是获取node的位置,关于参数 pos ,如果不加这个参数,则每次生成图的node的位置是随机生成的,因此有时候生成的图会很丑,所以我们要给他一个固定的坐标点,至于这个固定的坐标点 fixed_position 具体的数值是怎么得到的,我们可以先不加这个参数,先运行代码生成图,如果觉得这个图还不错,可以直接用这个图的坐标点。
  • nx.draw_networkx_edge_labels()这个函数主要作用是绘制图中边的权重数值,如果没有这个函数,则生成的图中没有那些权重数值。


    先就介绍这么多。。。

猜你喜欢

转载自blog.csdn.net/u012328159/article/details/79680048