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 に答える