python之networkx库小结

python之networkx库小结(转)

本文转载自 https://blog.csdn.net/your_answer/article/details/79189660

一、安装

安装的话,跟其他包的安装差不多吧。我用的是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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值