NetworkX 系列教程 (1)- 创建 graph
研究中经常涉及到图论
的相关知识,而且常常面对某些术语时,根本不知道在说什么。前不久接触了 NetworkX 这个 graph 处理工具,发现这个工具已经解决绝大部分的图论
问题 (也许只是我自己认为的,没有证据证明), 所以把这个工具的使用学习下,顺便学习图论
的相关知识.
NetworkX 本来是有官方文档的,花时间去学也是可以的,我这里把认为重要的整理出来。这些内容会分几次发布,做成一个系列使用教程.
系统环境:
linuxmint 18.3
python 3.5.2
numpy 1.14.3
matplotlib 1.5.1
networkx 2.1
全文注意事项:
1. 为了方便,graph 我有时候会称为
图
, 这时候不要将这个和图片混淆了.
2. 代码中会频繁使用 G.clear (), 这是在画新的 graph 之前,先清空原先的 graph
3.matplotlib 包不能显示平行边
,自循环
这类的边,所以需要借助 pydot 包来显示,不过一般使用 matplotlib 来显示
创建一个 Graph
例子:
下面涉及的 graph 如果不是特别需要,我将使用图1
这个手动创建的 graph, 这个 graph 有双向边,有孤岛节点,有平行边,有自循环
导入相应包,定义 graph
1 | #导入相应的包 |
有自循环的无向图
1 | #定义无向图 |
有自循环的有向图
1 | #清除前面的无向图 |
有自循环和平行边的无向图
1 | #清除前面的无向图 |
有自循环和平行边的有向图
1 | #清除前面的无向图 |