GRAPHVIZ:强制节点到页面顶部
GRAPHVIZ: Force node to top of page
我正在使用 graphviz,但是我想强制节点“This on top”到页面顶部,而不是侧面。这是图表:
这是代码:
g= Digraph('trial', filename='trial.gv')
g.attr(compound='true', rankdir="TB" )
with g.subgraph() as s:
s.attr(rank='max')
s.node('This on top ')
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" )
g
是否有命令确保节点按我希望的 TOP/Bottom 顺序显示?
第一个问题是设置rank='max'
强制第一个子图中的所有内容都达到最大等级,即最低等级。您可能打算设置 rank='min'
将子图中的项目置于最高级别,但仍然不会创建您想要的排列。
相反,您可以通过在创建边时设置 style = 'invis'
来使用不可见的边,以强制“这个在上面”出现在“这个在下面”之前。
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
产生:
我正在使用 graphviz,但是我想强制节点“This on top”到页面顶部,而不是侧面。这是图表:
这是代码:
g= Digraph('trial', filename='trial.gv')
g.attr(compound='true', rankdir="TB" )
with g.subgraph() as s:
s.attr(rank='max')
s.node('This on top ')
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" )
g
是否有命令确保节点按我希望的 TOP/Bottom 顺序显示?
第一个问题是设置rank='max'
强制第一个子图中的所有内容都达到最大等级,即最低等级。您可能打算设置 rank='min'
将子图中的项目置于最高级别,但仍然不会创建您想要的排列。
相反,您可以通过在创建边时设置 style = 'invis'
来使用不可见的边,以强制“这个在上面”出现在“这个在下面”之前。
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
产生: