Graphviz:如何对带有子图簇的超大图使用neato?

时间:2019-06-11 13:45:08

标签: graphviz neato

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

Windows上的点崩溃,而Linux上的段错误。

This question建议解决方案是使用neato,而不是dot

但是 this page

  

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

无论放大多远,我的输出都是一个巨大的黑色意大利面条球。因此,我删除了所有消息,但删除了一条,这表明这些子图形似乎是相互嵌套绘制的。

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

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布局方法似乎支持子图

,看来我也需要整齐的大图。

我有什么选择?


[Updtae]我运行了fdp并收到以下错误消息

  

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

这似乎提供了一个线索。确实可以在两个群集中不使用节点名称吗?

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

1 个答案:

答案 0 :(得分:1)

所以我没有一般的解决方案来解决您的问题。 但是您看过“火星”吗? 这是一个命令行工具,专门用于具有很大图形的graphviz程序。 您可以在这里找到它:https://github.com/marckhoury/mars