Python GRAPHVIZ:强制节点位于页面顶部

Python GRAPHVIZ:强制节点位于页面顶部,python,graphviz,pygraphviz,Python,Graphviz,Pygraphviz,我使用的是graphviz,但是我想强制节点“This on top”位于页面顶部,而不是侧面。这是图表: 代码如下: g=Digraph('trial',filename='trial.gv') g、 属性(component='true',rankdir=“TB”) 将g.子图()作为s: s、 属性(rank='max') s、 节点('此在顶部') s、 边缘(“此右下方”、“制造”) 将g.子图(name='cluster0')作为c: c、 节点(“本”) c、 节点(“该节点”)

我使用的是graphviz,但是我想强制节点“This on top”位于页面顶部,而不是侧面。这是图表:

代码如下:

g=Digraph('trial',filename='trial.gv')
g、 属性(component='true',rankdir=“TB”)
将g.子图()作为s:
s、 属性(rank='max')
s、 节点('此在顶部')
s、 边缘(“此右下方”、“制造”)
将g.子图(name='cluster0')作为c:
c、 节点(“本”)
c、 节点(“该节点”)
c、 节点(“此节点位于同一级别”)
g、 边缘(“此右下方”、“该”,lhead=“cluster0”)
g、 边缘(“那个”,“这个在上面”,ltail=“cluster0”)
G

是否有命令确保节点按我希望的上/下顺序显示?

第一个问题是设置
rank='max'
会强制第一个子图中的所有内容都转到最大秩,即最低秩。您可能打算设置
rank='min'
,将子图中的项目置于最高级别,但这仍然无法创建您想要的排列

相反,您可以通过在创建边时设置
style='invi'
来使用不可见边,强制将“This on top”置于“This right under”之前

产生:

太棒了,谢谢!
from graphviz import Digraph

g= Digraph('trial', filename='trial.gv')
g.attr(compound='true', rankdir="TB" )

with g.subgraph() as s:
  # s.attr(rank='min') # you don't need this line
  s.node('This on top ')
  s.edge('This on top ', 'this right under', style='invis') # add this invisible edge
  s.edge('this right under', "Fabrication")

with g.subgraph(name='cluster0') as c:
    c.node("This")

    c.node("that")
    c.node("and this on the same level")
g.edge("this right under", "that", lhead="cluster0" )
g.edge("that", "This on top ", ltail="cluster0", constraint="false" )

g