Graphviz DOT以圆圈排列节点,布局太"紧凑"

Ivo*_*zel 19 layout graph dot graphviz

我在那里,请看编辑

好的,这是我的问题,我正在生成一个python模块的图形,包括所有带有它们的函数/方法/类的文件.

我想安排它,节点聚集在它们的父节点周围,目前一切都在一个巨大的水平行上,这使得事物> 50k像素宽,并且让svg转换器失败(只渲染图的一半) ).

我浏览了文档但找不到任何似乎可以解决的问题.

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

编辑:
感谢安德鲁斯评论我有正确的布局,现在唯一的问题是它有点"紧凑"...所以现在的问题是,如何解决这个问题?

测试

dou*_*oug 34

我已经提到了影响当前布局的所有最重要的参数,然后提出了这些参数的建议值.尽管如此,我怀疑你可以通过应用其中一些建议来获得你想要的布局.

  • 减小边缘重量,例如[重量= 0.5]; 这会使边缘更长,导致您当前在图表中看到的紧密群集"扇出".

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

  • 明确设置节点的字体大小(节点边框被放大,以便它们围绕节点文本,这意味着给定节点的字体大小和文本量对其大小有显着影响); [fontsize = 11]应足够大,易于辨认,同时还要减少"杂乱"的外观(默认大小为14).

  • 通过'nodesep'增加节点之间的最小间隔 ; 例如,nodesep = 2.0; 这将直接解决您的图表"过于紧凑"的异议.('nodesep'和'ranksep'可能影响点绘制图形的方式比节点,边缘或图形的任何其他参数更多.在您的情况下,看起来您只有两个节点列;'ranksep'设置最小距离在不同 等级的节点之间- 看起来构成图表的所有节点具有相同的等级(除了中心的少数顶级节点).

  • 明确设置总图形大小,例如,size ="7.75,10.25"(确保您的图形适合8.5 x 11页面并占据整个空间)

  • 一个纯粹的美学建议,最多只会帮助你的图形看起来不那么杂乱:边缘和节点的默认字体颜色是黑色.图表上的大部分墨水来自这两个结构(特别是如果你删除节点边框),所以我会将节点(文本)fontcolor或边缘fontcolor设置为"blue"以帮助眼睛区分两组图结构.


spe*_*hil 6

如果它太紧凑,你会想要弄乱边长.根据图形布局,您有几个选项:

  1. 如果您的布局SFDP或FDP,调整的图形性能ķ.默认值为0.3.
  2. 对于neato(或fdp),调整edge属性len.对于neato,默认值为1.0,对于fdp,默认值为0.3.
  3. 对于点,您可以使用边缘属性minlen,它是最小边长.默认值为1.

您可能还想弄乱确定群集行为的图属性模型.具体来说,尝试子集.我相信这会为你处理len:http://www.graphviz.org/doc/info/attrs.html#d : model

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