Подграф Graphviz не визуализируется

#graphviz #dot

#graphviz #точка

Вопрос:

Я пытаюсь создать график с двумя подграфами в dot. Код выглядит следующим образом:

 digraph G {
        subgraph step1 {
                style=filled;
                node [label="Compiler"] step1_Compiler;
                node [label="Maschine"] step1_Maschine;
                color=lightgrey;
        }

        subgraph step2 {
                style=filled;
                color=lightgrey;
                node [label="Interpretierer"] step2_Interpretierer;
                node [label="Maschine"] step2_Maschine;
                label="Virtuelle Maschine";
        }

        "Programm (Java)" -> step1_Compiler;
        step1_Compiler -> step1_Maschine;
        step1_Maschine -> "Bytecode";
        "Bytecode" -> step2_Interpretierer;
        step2_Interpretierer -> step2_Maschine;
        step2_Maschine -> "Ergebnis";
}
  

Результат, который я получаю, выглядит следующим образом:

Результат приведенного выше кода

Я ожидал увидеть рамку вокруг обоих подграфов. Чего мне здесь не хватает?

Ответ №1:

Вам нужно будет добавить к имени ваших подграфов префикс cluster:

 subgraph clusterstep1 {
  

и

 subgraph clusterstep2 {
  

чтобы получить стиль и метку.

Из документации graphiz, раздел «Подграфы и кластеры»:

Третья роль для подграфов напрямую связана с тем, как график будет выложен определенными механизмами компоновки. Если имя подграфа начинается с cluster , Graphviz отмечает подграф как специальный подграф кластера. Если поддерживается, механизм компоновки выполнит компоновку так, чтобы узлы, принадлежащие кластеру, были нарисованы вместе, а весь рисунок кластера содержался в ограничивающем прямоугольнике. Обратите внимание, что, как хорошо, так и плохо, кластерные подграфы не являются частью языка DOT, а исключительно синтаксическим соглашением, которого придерживаются некоторые механизмы компоновки.

Комментарии:

1. Так будут ли подграф и подграф cluster * оба приводить к визуальной группировке в соответствии с алгоритмами компоновки?

2. Добавление префикса имени с cluster — такой глупый выбор дизайна… Почему недостаточно ключевого subgraph слова???

3. @71GA: Вы абсолютно правы, но зачем спрашивать об этом здесь? Запишите ошибку в graphviz.

4. @71GA: подал его сам … gitlab.com/graphviz/graphviz/-/issues/2187

5.Спасибо вам за это! У меня был файл с двумя подграфами, один из которых случайно был вызван cluster , и я не мог понять, почему был виден только один из них…