Python networkx tutorial教程
官网地址:
https://networkx.org/documentation/stable/tutorial.html
本文主要对官网进行翻译理解。
一、建图
1、建立一个没有边没有节点的空图
import networkx as nx G = nx.Graph()
根据定义,图是节点(顶点)和确定的节点对(称为边、链接等)的集合。在NetworkX中,节点可以是任何可哈希对象,例如,一个文本字符串、一张图像、一个XML对象、另一个图形、一个定制的节点对象等。
二、节点(Nodes)
图G可以通过几种方式增长。NetworkX 包含许多图形生成器函数和工具,可以以多种格式读取和写入图形。首先,可以一次添加一个节点:
G.add_node(1)
或者从任何可迭代容器(如列表)中添加节点:
G.add_nodes_from([2, 3])
如果容器产生如下形式的二元组 (node, node_attribute_dict),也可以在添加节点属性的同时添加节点:
G.add_nodes_from([ (4, {"color": "red"}), (5, {"color": "green"}), ])
一个图中的节点可以合并到另一个图中:
H = nx.path_graph(10) G.add_nodes_from(H)
G现在包含了H的节点作为G的节点,相反,你可以使用图形H作为G的节点:
G.add_node(H)
三、边(Edges)
G也可以通过每次增加一条边来增加:
G.add_edge(1, 2) e = (2, 3) G.add_edge(*e) # unpack edge tuple*
通过添加一系列边:
G.add_edges_from([(1, 2), (1, 3)])
或者通过添加任意一条边。ebunch是边元组的任何可迭代容器。一个边元组可以是一个包含节点的二元元组,也可以是一个包含两个节点的三元元组,后跟一个边属性字典,例如(2,3,{'weight': 3.1415})。
G.add_edges_from(H.edges)
在添加现有节点或边时没有问题。例如,在删除所有节点和边后:
G.clear()
我们添加了新的节点/边,NetworkX悄悄地忽略了所有已经存在的节点/边。
G.add_edges_from([(1, 2), (1, 3)]) G.add_node(1) G.add_edge(1, 2) G.add_node("spam") # adds node "spam" G.add_nodes_from("spam") # adds 4 nodes: 's', 'p', 'a', 'm' G.add_edge(3, 'm')
此时图G由8个节点和3条边组成,用下边的代码可以得出:
G.number_of_nodes() G.number_of_edges()