2013-01-10 26 views
1

之间对准我用GraphViz的有以下点文件:力GraphViz的力子

digraph "Fast-forward" 
{ 
    rankdir=LR; 
    subgraph master 
    { 
     "5c071a6b2c" -> "968bda3251"; 
    } 
    subgraph branch 
    { 
     "35ee8ce6b6" [color="blue"] [style="filled"]; 
     "968bda3251" -> "9754d40473" [weight=0]; 
     "9754d40473" -> "9e59700d33" -> "35ee8ce6b6"; 
    } 
    subgraph c1 
    { 
     rankdir=LR; 
     rank="same"; 
     "remote/master/HEAD" [shape=box]; 
     "remote/master/HEAD" -> "35ee8ce6b6" [weight=0]; 
     oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"]; 
     newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"]; 
     oldmh -> "968bda3251" [weight=0]; 
     newmh -> "35ee8ce6b6" [weight=0]; 
    } 
} 

它给我这样的事情: Bag thing

但我想这样的事情:

             white 
                 | 
                 \/ 
        "9754d40473" -> "9e59700d33" -> "35ee8ce6b6"; 
        /        /\ 

5c071a6b2c - > 968bda3251

   /\           | 
       | 
      red          blue 

我该怎么做?

对您的帮助, 提前致谢。

回答

3

我倾向于与定义所有的节点首先需要特殊需求(例如处于同一等级或具有特殊形状/颜色),然后定义链接。这样,您确信rank=same节点已正确分组,并按正确的顺序进行定义。

如果没有weight=0,所有的边链都会在最上面。将weight=0添加到您想要的底部。

digraph "Fast-forward" 
{ 
    rankdir=LR; 
    subgraph c1 { 
     rank="same"; 
     "968bda3251"; 
     oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"]; 
    } 
    subgraph c2 
    { 
     rank="same"; 
     "remote/master/HEAD" [shape=box]; 
     "35ee8ce6b6" [color="blue"] [style="filled"]; 
     newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"]; 
    } 
    "5c071a6b2c" -> "968bda3251" -> "9754d40473" -> "9e59700d33" -> "35ee8ce6b6"; 
    oldmh -> "968bda3251" [weight=0]; 
    "remote/master/HEAD" -> "35ee8ce6b6"; 
    newmh -> "35ee8ce6b6" [weight=0]; 
} 

The results from dot

如果你真的想96和97之间的点动,你可以这样来做:

digraph "Fast-forward" 
{ 
    rankdir=LR; 
    subgraph c1 { 
     rank=same; 
     "968bda3251"; 
     oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"]; 
    } 
    subgraph c1p5 { 
     rank=same; 
     "9754d40473"; 
     inviso [style="invis"]; 
    } 
    subgraph c2 
    { 
     rank="same"; 
     "remote/master/HEAD" [shape=box]; 
     "35ee8ce6b6" [color="blue"] [style="filled"]; 
     newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"]; 
    } 
    "5c071a6b2c" -> "968bda3251"; 
    "968bda3251" -> "9754d40473" [weight=0]; 
    "9754d40473" -> "9e59700d33" -> "35ee8ce6b6"; 
    oldmh -> "968bda3251" [weight=0]; 
    "remote/master/HEAD" -> "35ee8ce6b6"; 
    newmh -> "35ee8ce6b6" [weight=0]; 
    "968bda3251" -> inviso [style="invis"]; 
    "9754d40473" -> inviso [style="invis"]; 
} 

enter image description here

0

rank="same"影响的子图的所有节点,所以你必须在两个部分来分割你的标签子:

digraph "Fast-forward" 
{ 
    rankdir=LR; 
    subgraph master 
    { 
     "5c071a6b2c" -> "968bda3251"; 
    } 
    subgraph branch 
    { 
     "968bda3251" -> "9754d40473" [weight=0]; 
     "9754d40473" -> "9e59700d33" -> "35ee8ce6b6"; 
     "35ee8ce6b6" [color="blue"] [style="filled"]; 
    } 
    subgraph c1 
    { 
     rank="same"; 
     "remote/master/HEAD" [shape=box]; 
     "remote/master/HEAD" -> "35ee8ce6b6" [weight=0]; 
     newmh [label="master/HEAD"] [shape=box] [color="blue"] [style="filled"]; 
     newmh -> "35ee8ce6b6" [weight=0]; 
    } 
    subgraph c2 
    { 
     rank="same"; 
     oldmh [label="master/HEAD"] [shape=box] [color="red"] [style="filled"]; 
     oldmh -> "968bda3251" [weight=0]; 
    } 
} 

这会给你: enter image description here

+0

谢谢您的回答,但我已经意识到我的'asciiart'打印不正确,是否可以将远程/主/ HEAD放在顶部?感谢提前。 – GlinesMome

+0

尝试移动子图c1上方的子图c2。节点的定义顺序可能会影响它们在结果图上显示的顺序。这不是保证,但它可能有效。 **没关系,没有工作。我会再看一看。** – EdwinW