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

如何在点语言(graphviz)中强制节点重叠指定数量,graph,visualization,graphviz,dot,graph-visualization,Graph,Visualization,Graphviz,Dot,Graph Visualization,我是graphviz中点布局的新手。我试图用点语言指定一个图形,我希望某些节点集被强制重叠一定量(比如70%的面积或类似效果)。我知道我可以强制节点的x和y位置,从而导致重叠,但在这种情况下,我正在编写一个C#程序,在给定特定输入的情况下,为图形吐出相关的点脚本,因此节点的数量等不是硬编码的,因此我无法想出一个方案来硬编码所有节点的x和y位置。 在这方面的任何帮助都将不胜感激 非常感谢 正如@ninjalj所指出的,graphviz的一个优点是,它允许您很好地表示图形,并消除重叠等“缺陷”或“缺

我是graphviz中点布局的新手。我试图用点语言指定一个图形,我希望某些节点集被强制重叠一定量(比如70%的面积或类似效果)。我知道我可以强制节点的x和y位置,从而导致重叠,但在这种情况下,我正在编写一个C#程序,在给定特定输入的情况下,为图形吐出相关的点脚本,因此节点的数量等不是硬编码的,因此我无法想出一个方案来硬编码所有节点的x和y位置。 在这方面的任何帮助都将不胜感激


非常感谢

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

但是,您指出:

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

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

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


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

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

您几乎想为DOT编写自己的布局引擎,这不是一件小事。不过,可能还有其他方法来实现它,也许可以使用子图“cluster”关键字(例如子图clusterfoo{…})。如果你提到为什么你想让它们重叠,你想表达什么?是的,这些重叠的节点就像“簇”,在我的图中我想展示很多这样的簇。每一组重叠的节点都属于一个组,在我的可视化中,将它们显示为重叠是标准的。所以,我想实现这一点,我认为
dot
的全部目的是避免边缘和节点重叠?