Graphviz 圆点:避免树太平

Graphviz 圆点:避免树太平,graphviz,dot,Graphviz,Dot,我得到了以下图表: digraph G { user1 -> SuperUser user2 -> SuperUser user3 -> SuperUser user4 -> SuperUser user5 -> SuperUser user6 -> SuperUser user7 -> SuperUser user8 -> SuperUser user9 -

我得到了以下图表:

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的答案很好,但我忘了补充一点,我的图形非常大,大小不可预测,因此解决方案不能是“手动”

是的。您可以使用
rank
和不可见链接(
style=invi
)创建如下级别:

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


有关更多信息,请参阅图表。

如果您能更准确地告诉我们您希望最终结果是什么样子,这将有所帮助。您的问题的答案是“是”,并且@tk421给出了基本概念。更多信息,请多输入!关于深度,你是否自己写笔记(即你是否对写作有影响)。如果是后者,并且您知道“节点”的数量,您还可以计算所需列组的数量并将其添加到文件中,否则,在回答tk421的注释中建议的一些脚本可能是最佳解决方案。是否可以自动执行类似的操作?(我编辑了我的问题)如果您愿意编写一个过滤器,对发送到
dot
的内容进行预处理,您也许可以这样做。