如何强制节点在点语言中按指定的量重叠(graphviz)

ass*_*sin 13 visualization graph dot graphviz graph-visualization

我是graphviz中点布局的新手.我试图用点语言指定一个图形,我希望某些节点集合被强制重叠一定量(比如它们面积的70%或具有该效果的东西).我知道我可以强制x和节点y位置从而诱发重叠,但在这种情况下,我写的是给予一定的输入C#程序中吐出的图形相关点脚本,因此节点的数量等都是没有硬编码,所以我无法想出一个硬编码所有节点的x和y位置的方案.任何帮助都将非常感谢!

非常感谢!

Las*_*sen 4

正如 @ninjalj 指出的,graphviz 的优点之一是,它允许您很好地表示图形并消除重叠等“缺陷”或“缺陷” - 例如,通过使用 和 等overlap属性overlap_scaling

然而,您指出:

我知道我可以强制节点的 x 和 y 位置,从而引起重叠,但在这种情况下,我正在编写一个 C# 程序,给定某些输入,吐出图形的相关点脚本,因此节点的数量等为没有硬编码,所以我无法想出一个方案来硬编码所有节点的 x 和 y 位置。

因此,在我看来,你所说的是,你知道当给你特定的输入时,你将生成特定的图 - 换句话说,你知道节点(和簇)的数量是输入。这让我认为 @Daniel Kinsman 的建议可能是适合您的方法 - 也就是说,为该特定目的实现您自己的 DOT 布局引擎。

我并不是说这很简单,但是,这并非不可能,并且所需的逻辑当然很大程度上取决于您的应用程序的目标。

但在进行任何实现之前,我认为您应该查看一下graphviz 中已内置的cluster功能(@Daniel Kinsman 也指出了这一点),并考虑一下是否真的值得付出额外的努力来实现自定义 DOT 布局引擎,或者是否值得集群功能可能足以满足您的需求。