Графвиз: как использовать neato с очень большими графами с кластерами подграфов? - PullRequest
0 голосов
/ 11 июня 2019

У меня есть большой, но не очень большой (?) Граф с 13 кластерами подграфов, содержащими около 100 узлов и 3147 ребер.

Dot падает в Windows и вызывает ошибки в Linux.

Этот вопрос предполагает, что решение состоит в использовании neato, а не dot.

Но , эта страница говорит

Обратите внимание, что здесь есть некоторые причуды ... только методы макета 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 поддерживают подграфы

НО , мне также кажется, что мне нужен neato для большого графика.

Какие у меня варианты?


[Updtae] Я запустил fdp и получил следующее сообщение об ошибке

Ошибка: узел "xxx" содержится в двух несопоставимых кластерах "AAA" и "BBB"

Это, кажется, дает ключ к разгадке. Действительно ли это так, что имя узла не может использоваться в двух кластерах?

Если это так, то решение, по-видимому, заключается в том, чтобы предвосхищать имена узлов именем кластера ...

...