Как разместить узлы на одном уровне в DOT?
Я хочу сделать несколько деревьев одновременно и поместить все корневые узлы и все листовые узлы на один уровень.
Вот пример того, что я пытаюсь сделать. Корневые узлы A и X находятся на одном уровне, а также листовые узлы B, D и Z.
![Graph I want]()
Я безуспешно пытался положить корни в один ранг и ушел в другой следующим образом:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
rank = same; A; X;
rank = same; B; D; Y;
} /* closing subgraph */
}
И получил этот результат, когда все находится на одном ранге.
![enter image description here]()
Любые предложения о том, что я должен попробовать? У меня уже есть корни и листья идентифицированы.
Ответы
Ответ 1
Ввод операторов rank = same; ...
в фигурные скобки, например:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
// note that rank is used in the subgraph
{rank = same; A; X;}
{rank = same; B; D; Y;}
} /* closing subgraph */
}
... дает желаемый результат:
![enter image description here]()
Ответ 2
Вот простой пример, вдохновленный комментарием @William John Holden -
graph {
rankdir=LR;
a -- b -- c;
d -- e -- f;
b -- d; {rank = same; b; d;};
}
![graph]()