繁体   English   中英

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

[英]How to force nodes to overlap by a specified amount in the dot language (graphviz)

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

非常感谢!

正如@ninjalj指出的那样,关于graphviz的一个巧妙的事情是,它允许你很好地表示图形并摆脱重叠的“缺陷”或“缺陷” - 例如通过使用overlapoverlap overlap_scaling等属性。

但是,你指出:

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

所以,正如我所看到的,你所说的是你知道当你得到某个输入时,你将生成一个特定的图形 - 换句话说,你知道节点(和簇)的数量是一个函数输入。 这让我觉得@Daniel Kinsman的建议可能是你的方法 - 也就是说,为这个特定目的实现你自己的DOT布局引擎。

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

但在进行任何实现之前,我认为你应该看看已经内置到graphviz中的cluster功能 (@Daniel Kinsman也指出),并考虑是否真的值得花费额外的努力来进行自定义DOT布局引擎实现或如果群集功能可能足够您。

这可能是有用的:您可以使用graphviz的输出格式,它输出节点及其显式布局位置。 然后你可以重读它,并改变它们的大小。 如果没有一些关于你想要什么的演示图像,很难说这是否有助于您的特定需求。 这也许不是最好的解决方案。 我以为我会把它添加到你可以使用的工具库中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM