1

我有一个很大但不是很大(?)的图,有 13 个子图集群,包含大约 100 个节点和 3,147 条边。

Windows 上的 Dot 崩溃和 Linux 上的段错误。

这个问题表明解决方案是使用neato,而不是dot

但是这个页面

请注意这里有一些怪癖......只有 DOT 和 FDP 布局方法似乎支持子图

我的输出是一个巨大的黑色意大利面球,无论我放大多远。所以我删除了除一个之外的所有消息,这表明 subgrphs 似乎是相互嵌套绘制的。

它们绝对不会嵌套在源文件中;这是一个示例,更改了商业敏感名称:

digraph G {
       labelloc="t";    // place the label at the top (b seems to be default)
       label="XXX message passing";
         rankdir = "LR"
         newrank = "true"

         subgraph cluster_AAA {
              label="AAA"
              rank="same"

            AAA_1
          }

         subgraph cluster_BBB {
              label="BBB"
              rank="same"

            BBB_1
            BBB_2
          }

         subgraph cluster_CCC {
              label="CCC"
              rank="same"

            CCC_1
            CCC_2
            CCC_3
          }

这在语法上似乎是正确的(边缘紧随其后)。

因此,链接页面似乎是正确的:

只有 DOT 和 FDP 布局方法似乎支持子图

但是,看起来我也需要一个大图的neato。

我有哪些选择?


[Updtae] 我跑了fdp,得到以下错误信息

错误:节点“xxx”包含在两个不可比较的集群“AAA”和“BBB”中

这似乎提供了一个线索。一个节点名真的不能在两个集群中使用吗?

如果是这样,解决方案似乎是在节点名称之前加上集群名称......

4

1 回答 1

1

所以我没有一个通用的解决方案来解决你的问题。但是你看过“火星”吗?它是一个命令行工具,专为使用具有非常大图形的 graphviz 程序而设计。你可以在这里找到它:https ://github.com/marckhoury/mars

于 2019-09-21T12:57:31.437 回答