在dot中改变边的方向

28
我正在尝试使用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;
}

我得到的结果是

在此输入图片描述

我真的需要将边从S->S更改,但我也想更改箭头的方向,使它们从左到右循环。

2个回答

63

要改变箭头的方向,您可以简单地使用dir=back

S -> S [dir=back];

但在您的情况下,似乎并不需要这样做...(见下文)
由于边缘S->S与A->S和S->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


4
有没有办法让S推导成S的箭头显示在S底部? - Ooker

3

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

S->S[dir=both];

除此之外,您可以通过将链接从S更改为S来影响布局。您还可以通过反转节点列表的顺序来控制(非自引用)箭头的方向,例如:

S->T;
becomes
T->S;

我发现,不受过多限制的图表往往更好。我建议尝试删除rank=same命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接