文章目录
更多内容请查看官方文档,以下内容参考
https://networkx.github.io/
networkx简单介绍
networkX是一个Python包,用于创建、操作和研究复杂网络的结构、动态和功能。
安装只需在控制台使用pip安装即可,问题不大。
pip install networkx
不过复杂网络毕竟还是要可视化的,这边建议您同时使用python图形库matplotlib
import networkx as nx
import matplotlib.pyplot as plt
networkx基本操作
根据图的定义,图是节点的集合,并且节点间有依赖关系(边)。
在NetworkX中,节点可以是任何可刷新的对象,如文本字符串、图像、XML对象、另一个图(Graph)、自定义节点对象等。
使用如下代码,即可生成一个图。
G = nx.Graph()
节点(Nodes)
使用如下代码,即可生成包含三个节点的图,当然没有边连接的图就看起来特别搞笑。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph() #生成图
G.add_node(1) #添加一个节点
G.add_nodes_from([2, 3]) #添加列表里的节点
#可视化
nx.draw(G)
plt.show()
边(Nodes)
直接定义边连接,无需重新定义节点。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph() #生成图
G.add_edge(1, 2) #添加一条边
G.add_edges_from([(1, 3), (2, 3)]) #添加列表里的边
#可视化
nx.draw(G)
plt.show()
节点与边的属性信息
如下代码可以为图、节点、边添加属性信息。
import networkx as nx
import matplotlib.pyplot as plt
#为图添加属性
G = nx.Graph(day="Friday")
print(G.graph)
#为节点添加属性
G.add_node(1, time='5pm')
G.add_nodes_from([3], time='2pm')
print(G.nodes[1])
G.nodes[1]['room'] = 714
print(G.nodes.data())
#为边添加属性
G.add_edges_from([(1, 2), (1, 3)])
print(G.edges[1, 2])
G.edges[1, 2]['color'] = "red" #为边添加属性
print(G.edges[1, 2])
>>> {
'day': 'Friday'}
>>> {
'time': '5pm'}
>>> NodeDataView({
1: {
'time': '5pm', 'room': 714}, 3: {
'time': '2pm'}})
>>> {
}
>>> {
'color': 'red'}
节点与边的其他操作
当添加新的节点、边时,networkx会忽略任何已经存在的节点、边。
import networkx as nx
import matplotlib.pyplot as plt
G = nx.Graph(