Изменение направления кромки в точке

Я пытаюсь нарисовать довольно простую диаграмму в точке.

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, но я также хотел бы изменить ориентацию стрелок, чтобы они перемещались слева направо.

Ответ 1

Чтобы изменить ориентацию любой стрелки, вы можете просто использовать 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

Ответ 2

Я не знаю, можно ли стрелки стрелки слева направо. Вы можете осуществлять контроль над стрелками с помощью опции dir, например

S->S[dir=both];

Кроме того, вы можете влиять на макет, изменяя длину ссылки с S на S. Вы также можете управлять направлениями (несамореляционными) стрелками, изменяя порядок, в котором перечислены узлы, например:

S->T;
becomes
T->S;

Я обнаружил, что он почти всегда создает лучшие диаграммы, тем меньше он ограничен. Я бы предложил экспериментировать с удалением ранга = той же самой команды.