Graphviz точка вертикальное выравнивание узлов
Я получил этот точечный график и хочу, чтобы узлы A и D, B и E и C и F были выровнены. Вот связанный точечный код:
digraph{
A
B
C
D
E
F
{rank = same; B; C}
{rank = same; E; F}
A -> B [label="2", weight=2]
A -> C [label="0", style=dashed, weight=2]
B -> C [label="0", style=dashed, weight=2]
B -> D [label="2", style=dashed, weight=2]
C -> D [label="0", weight=2]
D -> E [label="1", style=dashed, weight=2]
D -> F [label="0", weight=2]
E -> F [label="0", weight=2]
F -> A
}
Как вы можете видеть, я уже пытался применить веса к краям, но это не сработало
1 ответов
можно использовать group
атрибут узлов, чтобы предложить выравнивание ребер между узлами одной и той же группы по прямой.
объявите узлы с атрибутом group:
A [group=g1]
{rank = same; B[group=g2]; C[group=g3]}
D [group=g1]
{rank = same; E[group=g2]; F[group=g3]}
затем убедитесь, что все эти узлы есть (невидимые) грани между ними:
edge[style=invis];
A -> D
B -> E
C -> F
все вместе:
digraph G {
A [group=g1]
{rank = same; B[group=g2]; C[group=g3]}
D [group=g1]
{rank = same; E[group=g2]; F[group=g3]}
A -> B [label="2", weight=2]
A -> C [label="0", style=dashed, weight=2]
B -> C [label="0", style=dashed, weight=2]
B -> D [label="2", style=dashed, weight=2]
C -> D [label="0", weight=2]
D -> E [label="1", style=dashed, weight=2]
D -> F [label="0", weight=2]
E -> F [label="0", weight=2]
F -> A
edge[style=invis];
A -> D
B -> E
C -> F
}