Прямая грань между кластерами в Graphviz
Я пытаюсь иметь ребро между кластерами в Graphviz, где край не влияет на ранжирование.
Это выглядит отлично:
digraph {
subgraph clusterX {
A
B
}
subgraph clusterY {
C
D
}
A -> B
B -> C [constraint=false]
C -> D
}
![gV3NZ.png]()
Однако, когда я добавляю метку к краю C -> D
, край B -> C
пытается обойти эту метку (которая выглядит уродливой).
digraph {
subgraph clusterX {
A
B
}
subgraph clusterY {
C
D
}
A -> B
B -> C [constraint=false]
C -> D [label=yadda]
}
![0nnY1.png]()
Любая идея, как я могу сохранить ребро от B
до C
прямо?
Ответы
Ответ 1
Самый простой способ добиться этого - добавить splines=false
в файл точки - это заставляет рендеринг ребер быть прямыми:
digraph {
splines=false;
subgraph clusterX {
A;
B;
}
subgraph clusterY {
C;
D;
}
A -> B;
B -> C [constraint=false];
C -> D [label=yadda];
}
Вывод:
![graphviz output]()
Ответ 2
Вы можете использовать эту версию:
digraph G {
subgraph cluster_X {
A [ pos = "0,1!" ];
B [ pos = "0,0!" ];
}
subgraph cluster_Y {
C [ pos = "1,1!" ];
D [ pos = "1,0!" ];
}
A -> B
B -> C[label="yadda"]
C -> D;
}
Затем вы используете neato (not dot)
neato -Tpng -oyadda.png yadda.dot
И результат:
alt text http://dl.dropbox.com/u/72629/yadda.png