2012-04-22 3 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. 제어 라벨 배치

어떻게 조작합니까? 충돌은 동일한 랭크 (P1 & P2)에 도트가 배치 된 노드간에 반대 방향으로가는 수직 에지에 발생하기 때문에 graph.png

답변

1

해당하므로 수직 랭크 방향 ("rankdir = LR"라인 드롭)를 사용할 수있는 논문의 특정 가장자리에 대한 레이블은 나란히 배치되지 않고 다른 하나의 아래에 배치됩니다.

주어진 문제에 대해서는 보편적 인 치료법이 아니지만 그래프를 불필요하게 팽창시키지 않고 여기에서 도움을 받아야합니다 ("노드셉"을 통한 노드 분리 증가).

+0

감사합니다. 계급을 제거하면 상황이 개선되었지만 다소 성가시다. 이전 노드 배치가 마음에 들었습니다. – mousomer