overlap
节点首先使用 sep
属性进行放大。如果为 true
,则保留重叠。如果值为 "scale"
,则通过在 x 和 y 方向上均匀缩放来消除重叠。如果该值转换为 "false"
,并且可用,则使用 Prism(一种基于邻近图的算法)来消除节点重叠。这也可以通过 overlap=prism
显式调用。此技术从一个小的缩放开始,由 overlap_scaling
属性控制,可以消除大部分重叠。prism 选项还接受一个可选的非负整数后缀。这可以用来控制重叠消除的尝试次数。默认情况下,overlap="prism"
等效于 overlap="prism1000"
。设置 overlap="prism0"
仅导致运行缩放阶段。
如果 Prism 不可用,或者 Graphviz 版本早于 2.28,则 "overlap=false"
使用一种基于 Voronoi 的技术。这总是可以通过 "overlap=voronoi"
显式调用。
如果 overlap="scalexy"
,则分别缩放 x 和 y 以消除重叠。
如果 overlap="compress"
,则布局将尽可能地缩小,而不会引入任何重叠,当然假设一开始就没有重叠。
注意: overlap
的其余允许值对应于目前可能产生不良纵横比的算法。此外,我们不建议使用 "ortho*"
和 "portho*"
。
如果该值为 "vpsc"
,则重叠消除通过二次优化完成,以在消除节点重叠的同时最大限度地减少节点位移。
如果该值为 "orthoxy"
或 "orthoyx"
,则通过优化两个约束问题来移动重叠,一个针对 x 轴,另一个针对 y 轴。后缀指示哪个轴首先处理。如果该值为 "ortho",则该技术类似于 "orthoxy",只是使用了一种启发式方法来减少两次传递之间的偏差。如果该值为 "ortho_yx"
,则该技术与 "ortho"
相同,只是 x 和 y 的角色颠倒。值 "portho"
、"porthoxy"
、"porthoxy"
和 "portho_yx"
与前四个类似,只是只强制执行伪正交排序。
如果布局是由 neato 完成的,且 mode="ipsep"
,则可以使用 overlap=ipsep
。在这种情况下,重叠消除约束被并入布局算法本身。注意:目前,这只支持一层集群。
除了 fdp
和 sfdp
之外,布局默认假设 overlap="true"
。Fdp 首先使用内置的基于力的技术进行多次传递,以尝试消除重叠。因此,fdp
接受带有一个整数前缀和一个冒号的 overlap
,指定尝试的次数。如果没有前缀,则不会执行任何初始尝试。如果冒号后没有内容,则不会尝试上述任何方法。默认情况下,fdp
使用 overlap="9:prism"
。请注意,overlap="true"
、overlap="0:true"
和 overlap="0:"
都关闭所有重叠消除。
默认情况下,sfdp
使用 overlap="prism0"
。
除了 Voronoi 和 prism 方法之外,所有这些转换都保留了原始布局的正交排序。也就是说,如果两个节点的 x 坐标最初相同,它们将保持相同,如果一个节点的 x 坐标最初小于另一个节点的 x 坐标,则这种关系将在转换后的布局中仍然存在。类似的属性适用于 y 坐标。这对于 "porth*"
案例并不完全正确。对于这些,只有通过边缘相关的节点才能保留正交排序。
- 图表