【问题标题】:Simple linear arrangement in graphvizgraphviz中的简单线性排列
【发布时间】:2011-10-07 02:04:54
【问题描述】:

我想生成这样的简单线性排列:

我觉得我这样做太难了。我尝试对位置进行硬编码,但它有点复杂,因为我想要样条边缘。

我并不特别关心边缘是在上面还是在下面,但指定这是一个不错的功能。

【问题讨论】:

    标签: graphviz dot neato


    【解决方案1】:

    这是人们可能认为使用 graphviz 一定很简单的事情之一,但实际上并非如此。

    Graphviz 旨在最小化边缘交叉,因此它永远不会像那些图片中那样放置边缘。 这不是 graphviz 的目的

    但我同意有一个关闭边缘优化的选项会很好。

    你可以创建这样的东西:

    rankdir=LR;
    ranksep=0;
    edge[style=invis];
    node[shape=none, width=0.3, height=0, margin=0.02];
    4->7->5->1->8->3->6->2;
    
    edge[style=solid, constraint=false];
    1:s->2:s->3:s->4:s->5:s->6:s->7:s->8:s
    

    导致

    一旦您开始使用南北端口,graphviz 将尝试最小化边缘交叉并引导节点之间的一些边缘:

    rankdir=LR;
    ranksep=0.05;
    edge[style=invis];
    node[shape=none, width=0.3, height=0, fontsize=12, margin=0.02];
    4->7->5->1->8->3->6->2;
    
    edge[style=solid, weight=0];
    1:n->2:n;
    2:s->3:s->4:s;
    4:n->5:n->6:n;
    6:s->7:s;
    7:n->8:n;
    

    如果有人有更好的近似值,请发布,我会感兴趣。

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2016-02-06
      • 1970-01-01
      • 2016-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      相关资源
      最近更新 更多