群集内节点距离增加一倍

时间:2019-04-26 10:26:12

标签: graphviz

我正在从图表工具为OOP语言自动生成Graphviz .dot文件。一些图使用聚类来表示例如包含多个实体(例如,对象)定义的文件。麻烦的是,在集群内部,节点距离增加了一倍,这导致了非常大的图表。一个简单的例子:

enter image description here

请注意,标记为“延伸”的边长是其他所有边的两倍。

此简单示例的源代码位于https://gist.github.com/pmoura/a3092a95eb5c2cd06e02735230a8b8ec

我认为一个更复杂的示例具有相同的根本原因:

enter image description here

是否存在一种使群集内节点之间的距离与群集节点与群集外节点之间的距离相同的解决方案?由于某些原因,dot会将群集边缘标签与外部节点对齐,如您在所附图像中所见。请注意,我正在寻找一种可以自动化的解决方案,而不是针对具体图表的解决方案。我尝试无济于事的内容包括newrank(总是断断续续)和边缘constraint。我发现的唯一解决方法是不使用群集,这阻止了我导出带有URL链接的SVG文件,该链接指向源代码存储库中的文件和目录。

第二张所附图表的源代码位于https://gist.github.com/pmoura/c12a9ce94f9a0b872c60087ac40c2975(太大,无法粘贴到此处)。

3 个答案:

答案 0 :(得分:1)

在进一步研究Graphviz资源之后,事实证明,此问题是由当前git版本中修复的错误引起的,而不是由图形参数化问题引起的。可在以下位置获得该错误凭单:

https://gitlab.com/graphviz/graphviz/issues/1288

该错误存在于当前(2.40.1)的稳定版本中以及当前的graphviz-2.41.20171026.1811.tar.gz开发快照中。

P.S。我在macOS上,通常使用MacPorts安装Graphviz。但是,在撰写本文时,MacPorts graphviz-devel端口文件将安装上面的快照,其中不包括错误修复。我最终使用Homebrew通过命令master轻松地编译和安装了当前的Graphviz git版本(brew install --HEAD graphviz分支)。

答案 1 :(得分:1)

很抱歉,自2017年以来我们还没有刷新官方的Devel快照!由于我们已迁移到gitlab上的免费帐户并且没有外壳访问权限,因此我们在一些网站问题上苦苦挣扎,因此很难执行以编程方式生成新内容的操作。也许有人可以告诉我们,是否有可能在具有外壳程序访问权限的gitlab上获得廉价的付费帐户。我确实给他们打过一次电话,但最终与一位不认识且不愿意提供帮助的销售代表交谈。我认识的每个人都很沮丧。

答案 2 :(得分:1)

另一种可能的解决方法是使用xlabelsheadlabel \ taillabel手动定位而不是label。那不是很方便,但是保留了边缘的长度。