图类型#

NetworkX 提供用于存储图的数据结构和方法。

所有 NetworkX 图类都允许使用(可哈希的)Python 对象作为节点,并且任何 Python 对象都可以用作边属性。

选择哪种图类取决于你想表示的图的结构。

我应该使用哪种图类?#

Networkx 类

类型

允许自环

允许平行边

Graph

无向

DiGraph

有向

MultiGraph

无向

MultiDiGraph

有向

基本图类型#

注意

NetworkX 使用 dicts 存储图中的节点和邻居。因此,基础图类的节点和边报告在不同版本和平台之间可能不一致;然而,CPython 的报告在 3.6 版本之后在不同平台和版本之间是一致的。

图视图#

将图视为子图、反向图、有向图、无向图的视图。

在某些算法中,临时改变图以排除某些节点或边很方便。通过视图来做这件事比先移除再重新添加更好。在其他算法中,临时改变图以反转有向边,或将有向图视为无向图等也很方便。本模块提供了这些图视图。

由此产生的视图本质上是只读的图,它们报告原始图对象的数据。我们提供一个 G._graph 属性,它指向底层图对象。

注意:由于图视图看起来像图,因此可能会形成视图链(视图的视图的视图)。请小心使用视图链,因为大约 15 个嵌套视图后它们会变得非常慢。对于从图类创建的节点诱导子图的常见简单情况,我们通过直接返回原始图的子图来截断视图链,而不是返回子图的子图。我们注意不要中断中间子图中的任何边过滤器。一般来说,确定如何截断视图链是棘手的,并且对于受限视图(restricted_views)来说比对于诱导子图更难。通常最简单的方法是使用 .copy() 来避免视图链。

generic_graph_view(G[, create_using])

返回 G 的只读视图。

subgraph_view(G, *[, filter_node, filter_edge])

应用节点和边过滤器的 G 的视图。

reverse_view(G)

边方向反转的 G 的视图

核心视图#

核心数据结构的视图,例如嵌套映射(例如,dict-of-dicts)。这些 Views 通常限制元素访问,整个视图或嵌套映射的层都是只读的。

AtlasView(d)

AtlasView 是只读的映射的映射。

AdjacencyView(d)

AdjacencyView 是只读的映射的映射的映射。

MultiAdjacencyView(d)

MultiAdjacencyView 是只读的映射的映射的映射的映射。

UnionAtlas(succ, pred)

两个 atlas(dict-of-dict)的只读联合。

UnionAdjacency(succ, pred)

将 dict Adjacency 视为映射的映射的映射的只读联合。

UnionMultiInner(succ, pred)

MultiAdjacencies 的两个内部 dict 的只读联合。

UnionMultiAdjacency(succ, pred)

两个 dict MultiAdjacencies 的只读联合。

FilterAtlas(d, NODE_OK)

带节点过滤标准的只读映射的映射。

FilterAdjacency(d, NODE_OK, EDGE_OK)

带节点和边过滤标准的只读映射的映射。

FilterMultiInner(d, NODE_OK, EDGE_OK)

带节点和边过滤标准的只读映射的映射。

FilterMultiAdjacency(d, NODE_OK, EDGE_OK)

带节点和边过滤标准的只读映射的映射。

过滤器#

注意

过滤器可与视图一起使用,以限制(或扩展)视图。它们可以过滤节点或过滤边。这些示例旨在帮助你构建新的过滤器。或者,它们可能包含你所需的所有过滤器。

用于隐藏或显示节点和边集的过滤器工厂函数。

这些过滤器返回创建 SubGraph 时使用的函数。

no_filter(*items)

返回一个始终评估为 True 的过滤器函数。

hide_nodes(nodes)

返回一个隐藏特定节点的过滤器函数。

hide_edges(edges)

返回一个隐藏特定无向边的过滤器函数。

hide_diedges(edges)

返回一个隐藏特定有向边的过滤器函数。

hide_multidiedges(edges)

返回一个隐藏特定多有向边的过滤器函数。

hide_multiedges(edges)

返回一个隐藏特定多无向边的过滤器函数。

show_nodes(nodes)

用于显示特定节点的过滤器类。

show_edges(edges)

返回一个显示特定无向边的过滤器函数。

show_diedges(edges)

返回一个显示特定有向边的过滤器函数。

show_multidiedges(edges)

返回一个显示特定多有向边的过滤器函数。

show_multiedges(edges)

返回一个显示特定多无向边的过滤器函数。