如何控制点中的边位置和标签(graphviz)

时间:2012-04-22 15:21:33

标签: layout label graphviz dot edge

我无法控制graphviz的布局。 试图生成一个简单的自动机。 来源:

digraph mygraph {
rankdir=LR;
size="13,13"
node [shape = circle];
init   -> Ready  [ label = "" ];

Ready -> P1  [ label = "t<T\n----TexT----" ];
P1  -> Ready [ label = "t>T" ];
P1  -> B1    [ label = "t<T" ];
B1  -> P1    [ label = "----TexT----" ];
B1  -> U1    [ label = "----TexT----" ];

Ready -> P2  [ label = "t<T\n----TexT----" ];
P2 -> Ready  [ label = "t>T" ];
P2 -> B2     [ label = "t<T" ];
B2 -> P2     [ label = "----TexT----" ];
B2 -> U2     [ label = "----TexT----" ];


U1  -> Ready [ label = "----TexT----", constraint=false];
U2  -> Ready [ label = "----TexT----", constraint=false];

P1 -> P2 [ label = "t<T\n----TexT----", constraint=false];
P2 -> P1 [ label = "t<T\n----TexT----", constraint=false];
}

麻烦的是,标签交织在一起。我可能需要: 1.间距更大 2.向上移动一些边缘 3.控制标签放置

我该怎么办? graph.png

1 个答案:

答案 0 :(得分:1)

由于冲突发生在相同方向(P1和P2)上由点放置的节点之间的相反方向上的垂直边缘上,因此可以使用垂直排名方向(删除“rankdir = LR”行)以使标签为这些特定边缘一个放在另一个下面而不是并排放置。

当然,这不是解决这类问题的普遍办法,但应该有助于此而不会不必要地膨胀图形(通过“nodesep”增加节点分离)。