overlap

确定是否以及如何消除节点重叠

类型: 字符串 | 布尔值,默认值:true

节点首先使用 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。在这种情况下,重叠消除约束被并入布局算法本身。注意:目前,这只支持一层集群。

除了 fdpsfdp 之外,布局默认假设 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*" 案例并不完全正确。对于这些,只有通过边缘相关的节点才能保留正交排序。

在以下位置有效
  • 图表

注意:fdpneatosfdpcircotwopi 仅此而已。

在 Graphviz 代码库中搜索 "overlap"

最后修改时间:2024 年 7 月 28 日:将所有 Hugo 'ref' 替换为 'relref' (bbef86a)