图类型#
NetworkX 提供用于存储图的数据结构和方法。
所有 NetworkX 图类都允许使用(可哈希的)Python 对象作为节点,并且任何 Python 对象都可以用作边属性。
选择哪种图类取决于你想表示的图的结构。
我应该使用哪种图类?#
Networkx 类 |
类型 |
允许自环 |
允许平行边 |
---|---|---|---|
Graph |
无向 |
是 |
否 |
DiGraph |
有向 |
是 |
否 |
MultiGraph |
无向 |
是 |
是 |
MultiDiGraph |
有向 |
是 |
是 |
基本图类型#
注意
NetworkX 使用 dicts
存储图中的节点和邻居。因此,基础图类的节点和边报告在不同版本和平台之间可能不一致;然而,CPython 的报告在 3.6 版本之后在不同平台和版本之间是一致的。
图视图#
将图视为子图、反向图、有向图、无向图的视图。
在某些算法中,临时改变图以排除某些节点或边很方便。通过视图来做这件事比先移除再重新添加更好。在其他算法中,临时改变图以反转有向边,或将有向图视为无向图等也很方便。本模块提供了这些图视图。
由此产生的视图本质上是只读的图,它们报告原始图对象的数据。我们提供一个 G._graph 属性,它指向底层图对象。
注意:由于图视图看起来像图,因此可能会形成视图链(视图的视图的视图)。请小心使用视图链,因为大约 15 个嵌套视图后它们会变得非常慢。对于从图类创建的节点诱导子图的常见简单情况,我们通过直接返回原始图的子图来截断视图链,而不是返回子图的子图。我们注意不要中断中间子图中的任何边过滤器。一般来说,确定如何截断视图链是棘手的,并且对于受限视图(restricted_views)来说比对于诱导子图更难。通常最简单的方法是使用 .copy() 来避免视图链。
|
返回 G 的只读视图。 |
|
应用节点和边过滤器的 G 的视图。 |
|
边方向反转的 G 的视图 |
核心视图#
核心数据结构的视图,例如嵌套映射(例如,dict-of-dicts)。这些 Views
通常限制元素访问,整个视图或嵌套映射的层都是只读的。
|
AtlasView 是只读的映射的映射。 |
AdjacencyView 是只读的映射的映射的映射。 |
|
MultiAdjacencyView 是只读的映射的映射的映射的映射。 |
|
|
两个 atlas(dict-of-dict)的只读联合。 |
|
将 dict Adjacency 视为映射的映射的映射的只读联合。 |
|
MultiAdjacencies 的两个内部 dict 的只读联合。 |
|
两个 dict MultiAdjacencies 的只读联合。 |
|
带节点过滤标准的只读映射的映射。 |
|
带节点和边过滤标准的只读映射的映射。 |
|
带节点和边过滤标准的只读映射的映射。 |
|
带节点和边过滤标准的只读映射的映射。 |
过滤器#
注意
过滤器可与视图一起使用,以限制(或扩展)视图。它们可以过滤节点或过滤边。这些示例旨在帮助你构建新的过滤器。或者,它们可能包含你所需的所有过滤器。
用于隐藏或显示节点和边集的过滤器工厂函数。
这些过滤器返回创建 SubGraph
时使用的函数。
|
返回一个始终评估为 True 的过滤器函数。 |
|
返回一个隐藏特定节点的过滤器函数。 |
|
返回一个隐藏特定无向边的过滤器函数。 |
|
返回一个隐藏特定有向边的过滤器函数。 |
|
返回一个隐藏特定多有向边的过滤器函数。 |
|
返回一个隐藏特定多无向边的过滤器函数。 |
|
用于显示特定节点的过滤器类。 |
|
返回一个显示特定无向边的过滤器函数。 |
|
返回一个显示特定有向边的过滤器函数。 |
|
返回一个显示特定多有向边的过滤器函数。 |
|
返回一个显示特定多无向边的过滤器函数。 |