Подтвердить что ты не робот

Прямая грань между кластерами в Graphviz

Я пытаюсь иметь ребро между кластерами в Graphviz, где край не влияет на ранжирование.

Это выглядит отлично:

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D
}

gV3NZ.png

Однако, когда я добавляю метку к краю C -> D, край B -> C пытается обойти эту метку (которая выглядит уродливой).

digraph {
  subgraph clusterX {
    A    
    B
  }

  subgraph clusterY {
    C
    D
  } 

  A -> B
  B -> C [constraint=false]
  C -> D [label=yadda]
}

0nnY1.png

Любая идея, как я могу сохранить ребро от B до C прямо?

4b9b3361

Ответ 1

Самый простой способ добиться этого - добавить splines=false в файл точки - это заставляет рендеринг ребер быть прямыми:

digraph {
 splines=false;
 subgraph clusterX {
    A;
    B;
 }

 subgraph clusterY {
    C;
    D;
 } 

 A -> B;
 B -> C [constraint=false];
 C -> D [label=yadda];
}

Вывод:

graphviz output

Ответ 2

Вы можете использовать эту версию:

digraph G { 
  subgraph cluster_X {
    A [ pos = "0,1!" ]; 
    B [ pos = "0,0!" ];
  } 
  subgraph cluster_Y {
    C [ pos = "1,1!" ]; 
    D [ pos = "1,0!" ];
  } 
  A -> B
  B -> C[label="yadda"]
  C -> D;
}

Затем вы используете neato (not dot)

neato -Tpng -oyadda.png yadda.dot

И результат:

alt text http://dl.dropbox.com/u/72629/yadda.png