点:避免过于水平的树

Dot : Avoid a too horizontal tree

我有以下图表:

digraph G {
    user1  -> SuperUser
    user2  -> SuperUser
    user3  -> SuperUser
    user4  -> SuperUser
    user5  -> SuperUser
    user6  -> SuperUser
    user7  -> SuperUser
    user8  -> SuperUser
    user9  -> SuperUser
    user10 -> SuperUser
    user11 -> SuperUser
    user12 -> SuperUser
    user13 -> SuperUser
}

我使用以下方式渲染它:

$ dot -Tpng test_dot -o test_dot.png

有没有一种方法可以避免像那样水平渲染太多?

我知道我可以使用 rankdir = LR 但我的问题和我想的一样

我想要一个不止一个层次的组织,这可能吗?

编辑:tk421 的答案很好,但我忘了补充一点,我的图很大而且大小不可预测,所以解决方案不能 "manual"

是的。您可以使用 rank 和不可见链接 (style = invis) 来创建关卡,如下所示:

digraph G {
    user1  -> SuperUser
    user2  -> SuperUser
    user3  -> SuperUser
    user4  -> SuperUser
    user5  -> SuperUser
    user6  -> SuperUser
    user7  -> SuperUser
    user8  -> SuperUser
    user9  -> SuperUser
    user10 -> SuperUser
    user11 -> SuperUser
    user12 -> SuperUser
    user13 -> SuperUser
    user5 -> user4 [ style = invis ];
    user9 -> user10 [ style = invis ];
    { rank = same; user1; user2; user3; user4 }
    { rank = same; user5; user6; user7; user8; user9 }
    { rank = same; user10; user11; user12; user13}
}

这将产生:

当然,您可以尝试一下,让它看起来像您想要的那样。

还有其他布局样式工具作为 graphviz 包的一部分。 例如,如果你想要一个更圆的图形,你可以使用 twopi 而不是 dot

$ twopi -Granksep=2  sample.dot -o twopi.png

有关详细信息,请参阅 Graphviz 的 Documentation