欢迎访问 生活随笔!

ag凯发k8国际

当前位置: ag凯发k8国际 > 编程语言 > python >内容正文

python

python networkx库-ag凯发k8国际

发布时间:2024/10/8 python 0 豆豆
ag凯发k8国际 收集整理的这篇文章主要介绍了 python networkx库_python之networkx库小结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

一、安装

安装的话,跟其他包的安装差不多吧。我用的是anaconda就不用装了。其他的话,就用pip install networkx吧,最好的话,需要装下malplotlib这个库。

二、建立图

import networkx as nx

g=nx.graph()#创建空的简单图

g=nx.digraph()#创建空的简单有向图

g=nx.multigraph()#创建空的多图

g=nx.multidigraph()#创建空的有向多图加点、加边

g.add_node(1)#加1这个点

g.add_node(1,1)#用(1,1)这个坐标加点

g.add_nodes_from([2,3])#加列表中的点

g.add_edge(1,2)#加边,起点是1终点是2

g.add_weight_edge(1,2,3.0)#第三个是权值

g.add_edges_from(list)#添加列表中的边

g.add_weight_edges_from(list)删除点和边的话g.remove_node()

g.remove_nodes_from()

g.remove_edge()

g.remove_edges_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())输出:1

2

3

(1, 2)

(1, 3)

[(1, 2), (2, 1), (3, 1)]#1这个点有两条边连着,2、3只有一条边连着一些特殊的图的生成:

k_5=nx.complete_graph(5)#完全图

k_3_3=nx.complete_bipartite_graph(3,3)#完全二分图三、画网络图

这就要用到matplotlib这个库了。

from matplotlib import pyplot as plt

import networkx as nx

g=nx.graph()

g.add_nodes_from([1,2,3])

g.add_edges_from([(1,2),(1,3)])

nx.draw_networkx(g)

plt.show()输出:

这个应该是最简单的用法了。复杂的图的,还有各种参数的使用只能去networkx的github上看了

四、最短路径的运用

1、无权无向图最短路径

from matplotlib import pyplot as plt

import networkx as nx

g=nx.path_graph(5)

path=nx.single_source_shortest_path(g,2)

length=nx.single_source_shortest_path_length(g,2)

print(path)

print(length)

nx.draw_networkx(g)

plt.show()输出:{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、有权无向图

以我上个博客为例子吧。from matplotlib import pyplot as plt

import 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(nodes)

g.add_weighted_edges_from(edges)

path=nx.single_source_dijkstra_path(g,4)

length=nx.single_source_dijkstra_path_length(g,4)

print(path)

print(length)

nx.draw_networkx(g)

plt.show()输出:{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

总结

以上是ag凯发k8国际为你收集整理的python networkx库_python之networkx库小结的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得ag凯发k8国际网站内容还不错,欢迎将ag凯发k8国际推荐给好友。

  • 上一篇:
  • 下一篇:
网站地图