2012-04-22 194 views
0

我无法控制graphviz的布局。 试图制作一个简单的自动机。 源:如何控制点的边缘位置和标签(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

自冲突上的垂直边缘上相同的秩(P1 & P2)放置在由点节点之间以相反的方向要发生可以使用垂直秩方向(掉落“rankdir = LR”线),从而使这些特定边缘的标签被放置在一个在另一个之下而不是并排放置。当然,这对于这类问题并不是一种普遍的治疗方法,但应该在这里有所帮助,而不会不必要地膨胀图表(通过“nodesep”增加节点间隔将会这样做)。

+0

谢谢。删除rankdir的确改善了一些事情,但这很烦人。我喜欢之前的节点布局。 – mousomer 2012-06-06 13:51:15