26

非常に単純な図をドットで描画しようとしています。

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が、矢印の方向も変更して、左から右にループするようにします。

4

2 に答える 2

58

矢印の方向を変更するには、次を使用するだけですdir=back

S -> S [dir=back];

しかし、あなたの場合、これは必要ではないようです...(以下を参照)

S -> SエッジとA -> Sおよびエッジがオーバーラップしているため、S -> ASとAの間の1つのエッジのみを使用し、両端に矢印を付けることをお勧めします。

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

graphviz出力

于 2011-03-24T22:08:23.243 に答える
3

矢印を左から右にループさせることができるかどうかはわかりません。dirオプションを使用すると、矢印をある程度制御できます。

S->S[dir=both];

さらに、リンクの長さをSからSに変更することでレイアウトに影響を与えることができます。また、ノードがリストされている順序を逆にすることで(非自己参照)矢印の方向を制御することもできます。

S->T;
becomes
T->S;

ほとんどの場合、制約が少ないほど、より良い図が生成されることがわかりました。rank=sameコマンドを削除してみることをお勧めします。

于 2011-03-24T19:47:25.927 に答える