在 graphviz python 中指定或更改节点的左右子节点

问题描述 投票:0回答:1

我在 python 中使用 graphviz 模块中的 Digraph 来可视化树。 我通过

Digraph.node()
创建节点并通过
Digraph.edge()
创建边。

我想指定哪个应该是右节点,哪个应该是左节点。 但它会自动将第一个创建的节点设置为左子节点,将第二个创建的节点设置为右子节点。

例如在这段代码中:

from graphviz import Digraph

test = Digraph()

test.node('a')
test.node('b')
test.node('c')

test.edge('c', 'b')
test.edge('c', 'a')

test

输出为:

我希望“b”节点是左子节点,“a”节点是右子节点,如下所示:

我应该强调我不能先创建“b”节点然后再创建“a”节点。

有没有办法用这个库为我做这件事?如果这个模块没有任何解决方案,请推荐另一个模块。

python graph tree visualization graphviz
1个回答
0
投票

这是一个相当合理的愿望,但是在 python-to-graphviz 接口(或 Graphviz 本身)中没有任何内容明确设置从上到下和从左到右的定位。
但是,您可能可以通过在 python 程序中进行一些“额外”簿记来获得所需的输出。要么:

  • 在你想要创建的 edges 的 python 程序中创建一个堆栈/列表,但实际上以“相反”顺序创建它们

  • 以“自然”顺序创建边,然后使用上面给出的链接中讨论的“隐形边”技巧来明确告诉 Graphviz 您想要什么顺序。

第一个备选方案可能是最容易开始的地方,甚至可能导致更小更简洁但稍微复杂一点的程序。祝你好运。

© www.soinside.com 2019 - 2024. All rights reserved.