При переключении с «нормальных» подграфов на кластеры, rank=same
перестает работать.
Чтобы показать мою проблему, взгляните на следующий примерный график.
digraph INV_X1 {
rankdir = "LR";
edge [penwidth="2"];
/* Component styles */
M_i_0 [shape=none;image="res/nmos.jpg"];
M_i_1 [shape=none;image="res/pmos.jpg"];
/* Node styles */
A [style=filled;color=green];
ZN [style=filled;color=green];
/* Connections */
M_i_0:n -> ZN;
A -> M_i_0:w;
/* Put M_i_0 and _VSS_0 on the same rank. */
subgraph g_VSS_0 {
rank=same;
label="_VSS_0";
_VSS_0 [shape=none;image="res/gnd.jpg";label=""];
M_i_0 -> _VSS_0 [arrowhead=none];
}
M_i_1:s -> ZN;
A -> M_i_1:w;
/* Put M_i_1 and _VDD_1 on the same rank. */
subgraph g_VDD_1 {
rank=same;
label="_VDD_1";
_VDD_1 [shape=none;image="res/pwr.jpg";label=""];
_VDD_1 -> M_i_1 [arrowhead=none];
}
}
Вывод показан на следующем рисунке. Я надеюсь, что это не слишком запутанно, поскольку я использовал некоторые изображения для узлов Я создал два подграфа, чтобы сгруппировать по два узла в каждом и поставить их в один ранг. Один подграф находится в центре вверху, другой в центре внизу.
Теперь я хочу переключиться с подграфов на кластеры, чтобы убедиться, что сгруппированные узлы всегда располагаются близко друг к другу, и я хочу иметь границы и метки, чтобы сделать кластеры видимыми. Но когда я просто изменяю имена подграфов на «cluster _...», это выглядит так:
В чем здесь проблема? Почему rank=same
больше не работает, как ожидалось? Также указанная позиция порта больше не работает должным образом (ребро больше не подключено на юге / севере узла).
Я пытался вытащить rank=same
из кластера в собственный оператор, но, похоже, он полностью перезаписывает предыдущий оператор кластера, когда границы и метки исчезают. Кроме того, я попытался использовать constraint=false
на соединениях с узлами, но это портит порядок узлов, поэтому я не был удовлетворен таким подходом.
Любая помощь приветствуется. Вы можете найти используемые изображения здесь , если хотите воссоздать график.