什么是networkx库-,networks python

  什么是networkx库?,networks python

  备战数模,还是知道多点好。网络x这个库的话,画网络图贼好用。

  一、安装

  安装的话,跟其他包的安装差不多吧。我用的是水蟒就不用装了。其他的话,就用点安装网络x吧,最好的话,需要装下malplotlib这个库。

  二、建立图

  将网络x作为nxG=nx导入. Graph()#创建空的简单图G=nx .有向图()#创建空的简单有向图G=nx .多重图形()#创建空的多图G=nx .多数码()#创建空的有向多图加点、加边

  G.add_node(1)#加一这个点G.add_node(1,1)#用(1,1)这个坐标加点G.add_nodes_from([2,3])#加列表中的点G.add_edge(1,2)#加边,起点是一终点是2G.add_weight_edge(1,2,3.0)#第三个是权值G.add_edges_from(list)#添加列表中的边G.add_weight_edges_from(列表)删除点和边的话g . remove _ node()g . remove _ nodes _ from()g . remove _ edge()g . remove _ edge _ from()g . clear()遍历点和边的话G.add_nodes_from([1,2,3])for n in g . nodes():print(n)g . add _ edges _ from([(1,2),(1,3)])for e in g . edges():print(e)print(g . degree())输出:123(1, 2)(1, 3)[(1, 2), (2, 1), (3, 1)]#1这个点有两条边连着,2、3只有一条边连着一些特殊的图的生成:

  k_5=nx.complete_graph(5)#完全图k _ 3 _ 3=nx.complete _二部图(3,3)#完全二分图三、画网络图

  这就要用到绘制精美的图表这个库了。

  从绘制精美的图表导入pyplot作为pltimport网络x作为nxG=nx .Graph()G.add_nodes_from([1,2,3])G.add_edges_from([(1,2),(1,3)])NX。绘图_网络x(G)PLT。显示()输出:

  这个应该是最简单的用法了。复杂的图的,还有各种参数的使用只能去网络x的开源代码库上看了

  四、最短路径的运用

  1、无权无向图最短路径

  从绘制精美的图表导入py绘制为pltimport networkx为nxG=NX。path _ graph(5)path=NX。single _ source _ shortest _ path(G,2)长度=NX。single _ source _ shortest _ path _ length(G,2)print(路径)print(长度)NX。绘图_网络x(G)PLT。显示()输出:{2: [2], 1: [2, 1], 3: [2, 3], 0: [2, 1, 0], 4: [2, 3, 4]}{2: 0, 1: 1, 3: 1, 0: 2, 4: 2}

  2、有权无向图

  以我上个博客为例子吧。

  从绘制精美的图表导入py plot as pltimport networkx as NX nodes=[0,1,2,3,4]edges=[(0,1,10),(0,3,30),(0,4,100),(1,2,50),(2,3,20),(2,4,10),(3,4,60)]G=nx .graph()G . add _ nodes _ from(节点)G . add _ weighted _ edges _ from(边)path=NX。single _ source _ Dijkstra _ path(G,4)长度=NX。single _ source _ Dijkstra _ path _ length(G,4)print(路径)print(长度)NX。绘图_网络x(G)PLT。显示()输出:{4: [4], 0: [4, 2, 3, 0], 2: [4, 2], 3: [4, 2, 3], 1: [4, 2, 1]}{4: 0, 2: 10, 3: 30, 1: 60, 0: 60}

  可以好好跟我的上个博客对比一下。

  五、参考

  https://networkx.github.io/documentation/networkx-1.9

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: