Ответ 1
Вы можете просто изменить границу между маршрутизаторами:
router1 -> router2[constraint=false];
constraint
указывает, следует ли использовать край в ранжировании узлов.
Я бы хотел, чтобы эти два узла отображались на одном уровне:
digraph G {
subgraph cluster1 {
label="Local Datacenter";
router1;
host1;
}
subgraph cluster2 {
label="Remote Datacenter";
router2;
host2;
}
router1 -> router2;
router2 -> host2;
router1 -> host1;
}
Я пробовал использовать rank=same
и rank=min
, но они не дают мне то, что мне нужно.
Интересно, что если я установил rankdir=LR
и закомментировал два края маршрутизатора-хозяина, он дает мне именно тот вид, который я хочу, но я хотел бы оставить его неповрежденными.
Вы можете просто изменить границу между маршрутизаторами:
router1 -> router2[constraint=false];
constraint
указывает, следует ли использовать край в ранжировании узлов.
Вы можете использовать атрибут (недокументированный?) newrank
(добавленный в GraphViz 2.30) для активации нового алгоритма ранжирования, который позволяет определять rank=same
для узлов, принадлежащих кластерам.
Добавьте вверху следующую строку:
newrank=true;
Добавьте следующую строку после определений кластера:
{ rank=same; router1; router2; }
Здесь результирующий граф: