19

我正在尝试使用 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 }
}

结果如下图:

渲染图像

我的问题是,我怎样才能让 E -> F 位于 D 下方,这样位于同一列中?

4

1 回答 1

28

至少从 2007 年 5 月开始,您不能强制“列”本身,但您可以权重应用于有助于强制对齐的边缘。但实际上,在这种情况下,如果你只是添加一条从 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 }
}

固定点图像

我不知道有任何方法可以将边缘强制到一侧或另一侧。

于 2009-09-25T11:07:48.640 回答