У меня есть большой, но не очень большой (?) Граф с 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"
Это, кажется, дает ключ к разгадке. Действительно ли это так, что имя узла не может использоваться в двух кластерах?
Если это так, то решение, по-видимому, заключается в том, чтобы предвосхищать имена узлов именем кластера ...