networkx简介(下)

图的创建

即构建Graph/DiGraph/MultiGraph/MultiDiGraph对象,三种方式:

  • 使用图产生器(Graph generators)产生一些典型的图如完全图、树状图,可以用这个很方便的构造一些模拟数据来进行算法的测试
G=nx.balanced_tree(3,3)
nx.draw(G)

上面的代码创建了一个三层的树状图

  • 从其它文件中导入
  • 显式的添加结点和边

图报告

实在是不知道怎么翻译“Graph Reporting”,这个意思其实就是图对象的一些函数,这些函数可以返回一些简单的图的信息,比如图的结点、边、每个结点的度、图是否是有向、图中所有的自环边,前面说到了像最短路径、连通图等较复杂的算法则在api那些全局函数中实现,图对象将作为参数传进去,下面是一些简单的报告函数:
import networkx as nx

g = nx.DiGraph()
g.add_edge(1, 2)
g.add_edge(2, 3)
g.add_edge(3, 4)
g.add_edge(4, 2)
g.add_edge(4, 4)

print(g.nodes())
print(g.edges())
print(g.degree())
print(g.is_directed())
print(list(g.selfloop_edges()))
输出:
[1, 2, 3, 4]
[(1, 2), (2, 3), (3, 4), (4, 2), (4, 4)]
[(1, 1), (2, 3), (3, 2), (4, 4)]
True
[(4, 4)]

图算法

networkx中包含非常多的算法,主要包含以下几大类:
  • 图的遍历算法
  • 图的最短路径算法
  • 图的中心度测量算法
  • 图的连通图算法
  • 图的最大流算法
  • 图的社区检测算法
下面是利用dijkstra算法a到d的最短路径
G=nx.Graph()
e=[('a','b',0.3),('b','c',0.9),('a','c',0.5),('c','d',1.2)]
G.add_weighted_edges_from(e)
print(nx.dijkstra_path(G,'a','d'))
输出:
['a', 'c', 'd']


图的可视化

networkx定位为图分析库,可视化并不是它擅长的,虽然它实现了一些简单的布局算法,但还是建议使用其它专门的图可视化库如Cytoscape, Gephi, Graphviz如:
G=nx.cubical_graph()
nx.draw(G,pos=nx.spectral_layout(G), nodecolor='r',edge_color='b')
上面的例子创建了一个立方体图,并用networkx自带的spectral_layout布局算法可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值