为什么graphviz将C绘制在B的右边?

时间:2010-03-14 17:29:17

标签: graph graphviz

为什么graphviz将C绘制在B的右侧?我希望它看起来像

A
B E
C

代替。

digraph  {
    compound=true
    subgraph cluster_1 { a -> b }
    b -> c
    {rank=same b -> e  }
}

alt text http://grab.by/33m4

2 个答案:

答案 0 :(得分:2)

因为它会增加图形的总面积,这是graphviz试图最小化的。您可以尝试在包中使用不同的布局实用程序,例如lefty或neato,以查看是否可以获得更好的结果。

答案 1 :(得分:2)

我不确定你能做到你想要的。

当dot列出给定图表时,它会将cluster_1视为单个实体以进行排名。所以,如果你喜欢,cluster_1的等级为0.那么因为你说{rank = same b,e},e也有等级0.当dot绘制c时,c将具有更高的等级 - 等级1 - 所以它将被绘制低于e。因为此时无需担心x轴上的空间,所以它会在e的正下方绘制。

如果您希望节点c明确地绘制在您可以添加的其他所有内容之下

{ rank=sink c }

......看起来并不像你所瞄准的那样伟大。