【问题标题】:Graphviz Vertical OrderingGraphviz 垂直排序
【发布时间】:2013-10-18 23:38:48
【问题描述】:

我有一组 GraphViz 节点,例如:

digraph {
    A->B;
    A->C;
    A->D;
}

但是BCD是按时间顺序发生的!

如果有某种方法可以指示每个节点应该出现的垂直级别(其中级别的数量可能事先未知),那就太好了。

有没有人想过如何做到这一点?

【问题讨论】:

    标签: graphviz dot


    【解决方案1】:

    让节点显示在与其他节点不同的等级(垂直级别)上的一个选项是添加不可见边。 为这些节点分配相同的group 表示graphviz 尽可能将它们布置在一条直线上。

    例如:

    digraph g{
      A;
     node[group=a];
     B;C;D;
     A -> B;
     A -> C;
     A -> D;
     edge[style=invis];
     B->C->D;
    }
    

    另一种选择是使用一条垂直线(不可见)节点,然后通过使用rank=same 在同一子图中定义相同等级的节点来强制相同等级:

    digraph g{
     {rank=same; l1[style=invis, shape=point]; A;}
     {rank=same; l2[style=invis, shape=point]; B;}
     {rank=same; l3[style=invis, shape=point]; C;}
     {rank=same; l4[style=invis, shape=point]; D;E;F;}
    
     A -> B;
     A -> C;
     A -> D;
     edge[style=invis];
     l1->l2->l3->l4;
    }
    

    【讨论】:

    • 谢谢!添加隐形链接来表达顺序关系的方法对我来说效果很好。简单又甜美!
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2021-08-22
    • 1970-01-01
    • 2014-08-02
    • 2021-02-26
    • 2018-05-16
    • 1970-01-01
    • 2015-01-21
    相关资源
    最近更新 更多