2009-09-25 74 views
19

我想使用的graphviz来模拟一定的流量,我无法弄清楚如何在下图模型共享相同的水平中心如何强制graphviz中同一列中的所有节点?

digraph exmp { 
    A -> B -> C -> D 
    C -> E [constraint=false] 
    A -> C [style="dotted", constraint=false] 
    A -> D [style="dotted", constraint=false] 
    B -> D [constraint=false] 
    D -> A [style="dashed", constraint=false] 
    C -> A [style="dashed", constraint=false] 


    subgraph cluster_hackToSinkIt { E -> F } 
    { rank="sink" E F } 
} 

这导致如下图:

rendered image

我的问题是,我怎么能让E - > F被定位在D之下,使得它位于同一列?

+0

图像现在坏了。我试图重新创建它,但我从graphviz得到错误 – 2014-04-09 07:01:05

回答

25

至少as of May 2007,你不能强迫“列” 本身,但你可以申请重量边缘,这应有助于力对齐。但实际上,在这种情况下,如果您只是添加了一个从D到E的不可见边缘,则您将获得垂直对齐。

digraph exmp { 
    A -> B -> C -> D 
    C -> E [constraint=false] 
    A -> C [style="dotted", constraint=false] 
    A -> D [style="dotted", constraint=false] 
    B -> D [constraint=false] 
    D -> A [style="dashed", constraint=false] 
    C -> A [style="dashed", constraint=false] 
    D -> E [style="invis"] // <---- important new line 


    subgraph cluster_hackToSinkIt { E -> F } 
    { rank="sink" E F } 
} 

fixed dot image

我不知道有任何办法强迫边缘一侧或另一侧。

+0

我已经删除了有关如何强制边缘的问题,并将为此创建一个新问题。否则很难判断哪个答案是正确的答案。 – 2009-09-25 14:00:57

相关问题