在Python Graphviz中可以设置用户指定的节点和边的位置吗?

0 投票
1 回答
27 浏览
提问于 2025-04-14 17:51

我想制作一个这样的图表(我不是用Graphviz做的):

这里输入图片描述

我尝试用Python的Graphviz写了以下代码:

g = Digraph(engine='neato')
g.node('1', label='Very long name', pos='0,0')
g.node('2',label='Another very long name', pos='0,-1')
g.edge('1', '2')

g.node('3','Very long name again', pos='0,-2')
g.edge('2', '3')
g.node('4', 'Another very long name', pos='10,-3')
g.edge('3', '4')

g

运行后输出了这个:

这里输入图片描述

为了控制节点的位置,我尝试使用neato引擎,但我觉得它似乎没有正常工作,所以我不知道如何在Graphviz中控制节点和边的位置,这在原则上可能吗?

1 个回答

1

你可以使用 rank 属性来控制图 g 中的一个子图。

from graphviz import Digraph

g = Digraph()

g.node('1', 'Very long name')
g.node('2', 'Another very long name')
g.node('3', 'Very long name again')
g.node('4', 'Another very long name')

g.edges(['12', '23'])

with g.subgraph() as s:
  s.attr(rank='same')
  s.edge('3', '4')

g

撰写回答