在Python Graphviz中可以设置用户指定的节点和边的位置吗?
我想制作一个这样的图表(我不是用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