0

我试图强制节点在图中具有指定的位置。这样做时,不同的子图没有正确对齐。生成此图的代码是:

digraph {
rankdir=LR;
labeljust="l";

subgraph cluster0{

label="t=0" 


n_3_0_0[label="192.168.8.6"
    pos="15,12!"    
    ];
n_3_0_1[label="192.168.8.3"
    pos="10,10!"    
    ];

 n_3_0_0 -> n_3_0_1 ;
 n_3_0_1 -> n_3_0_0 ;
};

subgraph cluster1{

label="t=5"     

n_3_1_0[label="192.168.8.6"
    pos="15,12!"    
    ];
n_3_1_1[label="192.168.8.3"
    pos="10,10!"    
    ];
n_3_1_2[label="192.168.8.9"
    pos="10,12!"    
    ];

 n_3_1_0 -> n_3_1_1 ;
 n_3_1_1 -> n_3_1_0 ;
};


subgraph cluster2{

label="t=10" 

n_3_2_0[label="192.168.8.6"
    pos="14,10!"    
    ];
n_3_2_1[label="192.168.8.3"
    pos="10,10!"    
    ];
n_3_2_2[label="192.168.8.9"
    pos="15,11!"    
    ];
n_3_2_3[label="192.168.8.8"
    pos="18,12!"    
    ];

 n_3_2_0 -> n_3_2_1 ;

 n_3_2_2 -> n_3_2_3 ;
 n_3_2_1 -> n_3_2_0 ;
 n_3_2_3 -> n_3_2_2 ;
};

}

我通过强制节点位置编译了这段代码:

dot -Kfdp -n -Tpng -o sample.png test2.dot

输出图是: http: //imageshack.us/photo/my-images/826/samplebg.png/ 我得到的输出问题是: 1. 子图没有按 t=0, t- 的顺序显示5, t=10... 2. 子图没有左对齐。

我需要有这样的输出图:http: //imageshack.us/photo/my-images/253/needed.png/

谢谢你。

4

1 回答 1

0

由于您已经预先计算了所有节点的位置,因此您实际上并不需要 fdp - 您只需要一个尊重该pos属性的布局。

所以你可以生成这样的输出:

neato -Tpng sourcedot.gv -O

但是您必须在此之前调整节点位置,以便正确堆叠子图而不是叠加:

digraph {
rankdir=LR;
labeljust="l";

subgraph cluster0{
label="t=0"
n_3_0_0[label="192.168.8.6"
    pos="15,4!"
    ];
n_3_0_1[label="192.168.8.3"
    pos="10,2!"
    ];

 n_3_0_0 -> n_3_0_1 ;
 n_3_0_1 -> n_3_0_0 ;
};

subgraph cluster1{
label="t=5"
n_3_1_0[label="192.168.8.6"
    pos="15,7!"
    ];
n_3_1_1[label="192.168.8.3"
    pos="10,5!"
    ];
n_3_1_2[label="192.168.8.9"
    pos="10,7!"
    ];

 n_3_1_0 -> n_3_1_1 ;
 n_3_1_1 -> n_3_1_0 ;
};


subgraph cluster2{
label="t=10"
n_3_2_0[label="192.168.8.6"
    pos="14,8!"
    ];
n_3_2_1[label="192.168.8.3"
    pos="10,8!"
    ];
n_3_2_2[label="192.168.8.9"
    pos="15,9!"
    ];
n_3_2_3[label="192.168.8.8"
    pos="18,10!"
    ];

 n_3_2_0 -> n_3_2_1 ;

 n_3_2_2 -> n_3_2_3 ;
 n_3_2_1 -> n_3_2_0 ;
 n_3_2_3 -> n_3_2_2 ;
};

}

导致

在此处输入图像描述 (中间子图的标签还需要做一些小调整)

或者只是使用 dot 并让它也对齐节点:

在此处输入图像描述

于 2012-09-28T06:59:56.250 回答