Graphviz Dot节点的垂直对齐

17

我有一个点图,并且希望节点A和D、B和E以及C和F对齐。这是相关的dot代码:

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个回答

38

可以使用节点的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
}

Graphviz diagram


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接