改变点的边缘方向

时间:2011-03-24 19:37:44

标签: graphviz dot

我正在尝试用点画出一个非常简单的图表。

digraph untitled
    {
    rankdir = LR;
    {rank=same; S; A}
    B -> A;
    B -> S;
    A -> A;
    S -> S;
    A -> S ;
    S -> A;
    A -> T;
    S -> T;
}

我得到的结果是

enter image description here

我真的必须改变S -> S的边缘,但我还想改变箭头的方向,使它们从左向右循环。

2 个答案:

答案 0 :(得分:45)

要更改任何箭头的方向,您只需使用dir=back

S -> S [dir=back];

但在你的情况下,似乎没有必要......(见下文)

由于边缘S -> SA -> SS -> A边缘之间存在重叠,我建议在S和A之间只使用一条边,两端都有箭头:

digraph g {
    rankdir = LR;
    {rank=same; S; A}
    B -> A -> T;
    B -> S -> T;
    A -> A;
    S -> S;
    A -> S[dir=both];
}

graphviz output

答案 1 :(得分:1)

我不知道是否可以使箭头从左向右循环。您可以通过使用dir选项对箭头进行一定程度的控制,例如

S->S[dir=both];

此外,您可以通过更改从S到S的链接长度来影响布局。您还可以通过反转节点列出的顺序来控制(非自参考)箭头的方向,例如:

S->T;
becomes
T->S;

我发现它几乎总能产生更好的图表,受限制的越少。我建议尝试删除rank = same命令。