Изменение направления ребра в точке - PullRequest
16 голосов
/ 24 марта 2011

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

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 ]

46 голосов
/ 25 марта 2011

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

1 голос
/ 24 марта 2011

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

S->S[dir=both];

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

S->T;
becomes
T->S;

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

...