2010-04-16 149 views
18

我半路请参阅编辑Graphviz的DOT安排圈节点,布局过于“紧凑”

确定这里是我的问题,我产生一个Python模块的图形,包括所有的文件与他们的功能/方法/类。

我想要安排它,节点围绕它们的父节点聚集在一起,目前所有东西都在一个巨大的水平行上,这使得东西宽度大于50k像素,并且让svg转换器失效(只渲染关于一半的图)。

我经历了docs,但找不到任何似乎有用的技巧。

所以问题是:
有没有一种简单的方法来做到这一点,还是我必须自己布局整个事情? :/

编辑:
由于安卓评论我已经得到了正确的布局,唯一的问题是现在这是一个有点“紧凑型” ......所以,现在的问题是,如何解决这一问题?

Test

+4

你试过用“NEATO”布局?它可能会给你想要的结果。 – Andrew 2010-04-16 00:15:59

+0

刚刚尝试通过命令行开关-K,有点作品看到我的编辑。 – 2010-04-16 00:35:15

+3

有点晚,但是当你用neato得到这个重叠的布局时,只需设置“overlap = false”。 – pablasso 2012-01-10 17:54:56

回答

31

我提到所有影响你当前布局的最显著的参数,然后提出这些参数值。不过,我怀疑你可以通过应用这些建议来获得你想要的布局。

  • 减小边缘重量,例如,[重量= 0.5]。这将使 边缘更长,导致您目前在 图中看到的紧密 群集“扇出”。

  • 摆脱节点边界,node_A [color = none;形状=明文]; 特别是对于椭圆形节点, 节点空间的大部分是'未使用'(即,未使用 来显示节点标签)。

  • 明确设置的字体大小 (节点边框 放大,使得它们包围 节点文本,这意味着该字体 大小和文本的量对于给定的 节点具有节点对其尺寸 有显着影响); [fontsize = 11]应该足够清晰,但也可以减少 '混乱'的外观( 默认大小为14)。

  • 增加 节点之间的最小间隔,通过'nodesep';例如,nodesep = 2.0;这将 直接解决您的异议 您的图形是“太 紧凑”。 ('nodesep'和'ranksep' 可能会影响点的绘制方式 对于 节点,边或图的绘制数量要多于其他参数。在你的情况下, 它看起来像你只有两个队列 节点; “ranksep”设置的不同 行列节点之间的最小距离 - 它看起来像所有的包括你的图形中的节点 都是 同一职级(除了少数顶级的中心 节点)。

  • 明确设置总图形大小,例如 大小=“7.75,10.25”(确保您 图表符合一个8.5×11页和 ,它占据了整个空间上)

  • 和一个纯粹的审美建议 ,最多只会帮助你的 图出现较少凌乱: 默认fontcolor两边和 节点是黑色的。在图形中的大多数 油墨是由这两个 结构(特别是如果你 删除该节点的边界),所以我会 例如设置任何节点 (文本)FONTCOLOR或边缘 FONTCOLOR为“蓝”帮助眼睛 区分两组图 结构。

+1

事实上,我在这里报告了一个非常类似的问题,并且使用'ranksep'是扇出图的关键配置。谢谢! – 2013-01-30 16:26:26

+0

你能告诉我这个文件吗?使用工作代码样本? – aitchnyu 2015-07-09 15:06:25

6

如果它太紧凑,你会想弄乱边缘长度。你必须根据图形布局几个选项:

  1. 如果你的布局SFDP或FDP,捏捏财产ķ。默认值是0.3。
  2. 对于neato(或fdp),调整边缘属性len。 neato默认值为1.0,fdp默认值为0.3。
  3. 对于点,您可以使用边缘属性minlen这是最小边缘长度。默认值为1.

您可能还想混淆图属性模型它确定聚类行为。具体来说,请尝试子集。我相信这会为你LENhttp://www.graphviz.org/doc/info/attrs.html#d:model

此外,您还可以使用缩放技术去除重叠一起:http://www.graphviz.org/doc/info/attrs.html#d:overlap

+0

嗯.. minlen似乎不工作.... – Pacerier 2014-07-16 22:40:39