generate_network_text#
- generate_network_text(graph, with_labels=True, sources=None, max_depth=None, ascii_only=False, vertical_chains=False)[source]#
生成“网络文本”格式的线条
这通过深度优先遍历图并在遇到每个唯一节点时写入一行来实现。非树边写在每个节点的右侧,并通过省略号指示与非树边的连接。这种表示方法在输入图是森林时效果最佳,但任何图都可以表示。
这种表示法是networkx原创的,尽管它足够简单,可能在现有文献中已知。详情请参见#5602。该过程总结如下:
给定一组源节点(可以指定,或通过找到(强)连通分量并从每个分量中选择一个度数最小的节点来自动发现),我们以深度优先顺序遍历图。
每个可到达的节点将仅在其自己的行上打印一次。
边以四种方式之一表示:
父节点“L形”连接在左上角。这对应于有向DFS树中的遍历。
直接显示在右侧的回溯“<-形”连接。对于有向图,这些是为指向节点的任何非父边绘制的。对于无向图,这些仅绘制已表示的非父边(未表示的边将在递归情况下处理)。
子节点“L形”连接在右下角。子节点的绘制是递归处理的。
如果
vertical_chains
为真,并且父节点只有一个子节点,则在它们之间绘制“垂直形”边。
每个节点的子节点(相对于有向DFS树)绘制在其下方和右侧。如果子节点已绘制,则连接替换为省略号(“…”)以指示有一个或多个连接在其他地方表示。
如果指定了最大深度,则到超过此深度的节点的边将用省略号表示。
如果节点的“collapse”值为真,则我们不遍历该节点。
- Parameters:
- graphnx.DiGraph | nx.Graph
要表示的图
- with_labelsbool | str
如果为True,将使用节点的“label”属性显示(如果存在),否则将使用节点值本身。如果给定为字符串,则将使用该属性名称而不是“label”。默认为True。
- sourcesList
指定从哪些节点开始遍历。注意:无法从这些源到达的节点可能不会显示。如果未指定,将使用到达所有其他节点所需的最小节点集。
- max_depthint | None
遍历的最大深度。默认为None。
- ascii_onlyBoolean
如果为True,仅使用ASCII字符构建可视化。
- vertical_chainsBoolean
如果为True,尽可能垂直绘制节点链。
- Yields:
- str生成的文本行
Examples
>>> graph = nx.path_graph(10) >>> graph.add_node("A") >>> graph.add_node("B") >>> graph.add_node("C") >>> graph.add_node("D") >>> graph.add_edge(9, "A") >>> graph.add_edge(9, "B") >>> graph.add_edge(9, "C") >>> graph.add_edge("C", "D") >>> graph.add_edge("C", "E") >>> graph.add_edge("C", "F") >>> nx.write_network_text(graph) ╙── 0 └── 1 └── 2 └── 3 └── 4 └── 5 └── 6 └── 7 └── 8 └── 9 ├── A ├── B └── C ├── D ├── E └── F >>> nx.write_network_text(graph, vertical_chains=True) ╙── 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 ├── A ├── B └── C ├── D ├── E └── F