集群内的节点距离加倍
Node distance doubles inside clusters
我从 OOP 语言的图表工具自动生成 Graphviz .dot
文件。一些图表使用集群来表示例如包含多个实体(例如对象)定义的文件。问题是,在集群内部,节点距离加倍,这导致图表非常大。一个简单的例子:
请注意标记为 "extends" 的边的长度是所有其他边的两倍。
这个简单示例的源代码位于 https://gist.github.com/pmoura/a3092a95eb5c2cd06e02735230a8b8ec
一个我认为具有相同根本原因的更复杂的示例:
有没有办法让集群内节点之间的距离与集群节点与集群外节点之间的距离相同?出于某种原因,dot
正在将集群边缘标签与外部节点对齐,如您在附图中所见。请注意,我正在寻找一种可以自动化的解决方案,而不是针对具体图表的修复。我尝试无济于事的事情包括 newrank
(总是出现段错误)和边缘 constraint
。我发现的唯一解决方法是不使用集群,这会阻止我导出带有 URL 链接到源代码存储库中的文件和目录的 SVG 文件。
第二个附加图表的源代码位于 https://gist.github.com/pmoura/c12a9ce94f9a0b872c60087ac40c2975(太大而无法粘贴到此处)。
在对 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
portfile 安装了上面的快照,其中不包括错误修复。我最终使用 Homebrew 使用命令 brew install --HEAD graphviz
.
轻松编译和安装当前的 Graphviz git 版本(master
分支)
抱歉,自 2017 年以来我们似乎没有刷新官方开发快照!自从我们转移到 gitlab 上的免费帐户并且没有 shell 访问权限后,我们在一些网站问题上遇到了一些困难,因此很难以编程方式生成新内容。也许有人可以建议我们是否可以在 gitlab 上获得一个具有 shell 访问权限的廉价付费帐户。我确实给他们打过一次电话,但最后和一位不认识也没有动力提供帮助的代表交谈。我认识的每个人都感到沮丧。
另一种可能的解决方法是使用 xlabels or headlabel \ taillabel 手动定位而不是 label
。这不是很方便,但边缘长度保持不变。
我从 OOP 语言的图表工具自动生成 Graphviz .dot
文件。一些图表使用集群来表示例如包含多个实体(例如对象)定义的文件。问题是,在集群内部,节点距离加倍,这导致图表非常大。一个简单的例子:
请注意标记为 "extends" 的边的长度是所有其他边的两倍。
这个简单示例的源代码位于 https://gist.github.com/pmoura/a3092a95eb5c2cd06e02735230a8b8ec
一个我认为具有相同根本原因的更复杂的示例:
有没有办法让集群内节点之间的距离与集群节点与集群外节点之间的距离相同?出于某种原因,dot
正在将集群边缘标签与外部节点对齐,如您在附图中所见。请注意,我正在寻找一种可以自动化的解决方案,而不是针对具体图表的修复。我尝试无济于事的事情包括 newrank
(总是出现段错误)和边缘 constraint
。我发现的唯一解决方法是不使用集群,这会阻止我导出带有 URL 链接到源代码存储库中的文件和目录的 SVG 文件。
第二个附加图表的源代码位于 https://gist.github.com/pmoura/c12a9ce94f9a0b872c60087ac40c2975(太大而无法粘贴到此处)。
在对 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
portfile 安装了上面的快照,其中不包括错误修复。我最终使用 Homebrew 使用命令 brew install --HEAD graphviz
.
master
分支)
抱歉,自 2017 年以来我们似乎没有刷新官方开发快照!自从我们转移到 gitlab 上的免费帐户并且没有 shell 访问权限后,我们在一些网站问题上遇到了一些困难,因此很难以编程方式生成新内容。也许有人可以建议我们是否可以在 gitlab 上获得一个具有 shell 访问权限的廉价付费帐户。我确实给他们打过一次电话,但最后和一位不认识也没有动力提供帮助的代表交谈。我认识的每个人都感到沮丧。
另一种可能的解决方法是使用 xlabels or headlabel \ taillabel 手动定位而不是 label
。这不是很方便,但边缘长度保持不变。