#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
, и я не мог понять, почему был виден только один из них…