【问题标题】:Node positions in GraphvizGraphviz 中的节点位置
【发布时间】:2019-08-29 21:37:10
【问题描述】:

我正在尝试设置下图,以使“old_view”和“new_views”在顶部处于同一排名,而“old_submits”和“new_sub”在底部处于同一排名。 “继续”将位于两行之间。

我已尝试按照其他人的建议使用子图,但在这方面对我没有帮助。

c=Digraph('parent')

c.attr('graph', label='')
c.attr('node',fontname='helvetica')
c.attr('graph',fontname='helvetica')
c.attr('edge',fontname='helvetica')
c.attr('node', shape='box', color='lightgrey')
c.attr(rank='same')

c.node('old_views')
c.node('new_views')
c.node('continues')


g=Digraph('subgraph')
g.graph_attr.update(rank='same')
g.node('new_submits')
g.node('old_submits')

c.edge('new_views','continues')
c.edge('continues','new_submits')
c.edge('old_views','old_submits')

c.subgraph(g)

c

示例图片:

【问题讨论】:

    标签: graphviz pygraphviz


    【解决方案1】:

    一个纯粹的graphviz 提示你应该能够轻松地转移到python:

    如果你想“跳过”一个关卡,你有两种可能(至少):

    您可以使用空节点 - 缺点是您必须定义该空节点 b,并且从 a 指向 b 的边需要没有箭头。另外,如果您仔细观察,您会看到从ac 的途中有一个空像素。

    后者您可以通过从A 987654330 @到C,不仅需要对此额外的边缘创造,而且在D -> E -> E边缘的重量增加直截了当。

    digraph so 
    {
        b[ shape = point, width = 0]
        a -> b[ dir = none ];
        b -> c;
        d -> e -> f;
    
        A -> C;
        A -> E -> C[ style = invis ];
        D -> E -> F[ weight = 10 ];
    }
    

    选择是你的!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-23
      • 2017-05-13
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2018-12-18
      • 1970-01-01
      相关资源
      最近更新 更多