如何优化GraphViz输出宽度?

时间:2011-06-19 13:13:05

标签: graphviz

我制作的图形具有巨大的宽度比:它们的大小为51706 x 503像素。 如何告诉GraphViz优化宽度?

注1:图表实际上是一棵树,每个节点都有很多孩子。 这是sample

注2:我想我用dot:)

注3:这是Ruby code

3 个答案:

答案 0 :(得分:14)

如果图形由几个未连接的树组成,您可以将它们拆分(如Graphviz: break flat but sparsely connected graph into multiple rows?中所述)

根据您的特定图表,使用

时可能会获得较小的图表
ratio="compress"

(你必须指定size

对于特定图表的详细优化,您可以添加rank属性并在不同的等级上手动分配节点


编辑:

有一个名为 unflatten 的graphviz工具似乎完全存在于此目的:

  

unflatten是dot的预处理器,用于改善方面   具有许多叶子或断开连接的节点的图的比率。通常   这种图形的布局通常非常宽或高。 unflatten   插入不可见的边缘或调整边缘上的minlen以改善   布局压缩。

从来没有必要使用它,但我认为值得一试。

答案 1 :(得分:3)

我还有一个问题,即neato在盒子之间保留了很多空间。最后,我使用以下图形设置获得了合理的结果:

overlap=prism, overlap_scaling=0.01, ratio=0.7

测试overlap_scaling和ratio的不同值特别有用。使用较小的示例(<50个节点)并使用gvedit.exe查看效果是最快的。

我花了很长时间来确定这些设置,这些设置记录在http://www.graphviz.org/doc/info/attrs.html

答案 2 :(得分:2)

您可以尝试使用ratio参数。