Я использую Graphviz для создания этой диаграммы:
Выход не оптимальный. Линия XZ без необходимости пересекает линию XY; Я ожидаю, что Y будет выше X. Я пробовал много вариантов из документа, но безрезультатно. Вот какой результат я ожидаю:
Как я могу заставить Graphviz создавать более оптимизированные диаграммы?
ПРИМЕЧАНИЕ. Я хотел бы автоматизировать создание подобных диаграмм, поэтому решения, характерные для описанного выше сценария (например, невидимые ребра из X0 -> Y1, Y11 -> X03 или еще что-то), не помогут. Я ищу способ, чтобы в целом доверять таким вещам, как:
- А-Х-В будет прямой линией.
- Y будет выше A-X-B, если он не взаимодействует с Z.
- X->Y->X не будет без необходимости вызывать большие промежутки между узлами X.
Содержимое точечного файла:
digraph G {
rankdir=LR
subgraph cluster_x {
node [style=filled,color=green]
"X.0" -> "X.0.1" -> "X.0.2" -> "X.0.3" -> "X.0.4"
}
subgraph cluster_y {
node [style=filled,color=lightblue]
"Y.1" -> "Y.1.1"
}
subgraph cluster_z {
node [style=filled,color=crimson]
"Z.1" -> "Z.1.1"
"Z.2"
}
A -> "X.0"
"X.0.1" -> "Y.1"
"X.0.1" -> "Z.2"
"X.0.2" -> "Z.1"
"Y.1.1" -> "X.0.2"
"Z.1.1" -> "X.0.4"
"Z.2" -> "Z.1.1"
"X.0.4" -> B
}