Перекрывающиеся ребра в графвизе - PullRequest
1 голос
/ 23 марта 2012

У меня два перекрывающихся ребра, и я не знаю, почему:

digraph G {
    graph [rankdir=LR, overlap=false];
    subgraph cluster1 {
       d1;
       n1;
    }
    subgraph cluster2 {
       n2;
       d2;
    }
    n1 -> n2;
    n2 -> n1;
    d0 -> d1;
    d0 -> d2;
}

enter image description here

Есть ли способ отобразить оба ребра n1 -> n2 и n2 -> n1 отдельно? Удаление кластеров не вариант, но поможет ...

Ответы [ 2 ]

4 голосов
/ 24 марта 2012

Решение, использующее модификатор portPos :

digraph G {
    graph [rankdir=LR, overlap=false];
    subgraph cluster1 {
       d1;
       n1;
    }
    subgraph cluster2 {
       n2;
       d2;
    }
    n1:sw -> n2:nw;
    n2:ne -> n1:se;
    d0 -> d1;
    d0 -> d2;
}

Другое решение заключается в использовании модификаторов dir и color :

digraph G {
    graph [rankdir=LR, overlap=false];
    subgraph cluster1 {
       d1;
       n1;
    }
    subgraph cluster2 {
       n2;
       d2;
    }
    n2 -> n1[dir=both color="red:blue"];
    d0 -> d1;
    d0 -> d2;
}

Вы даже можете использовать color="black:black", если хотите сохранить черно-белую схему окраски.

3 голосов
/ 26 марта 2012

Решение проб и ошибок (не спрашивайте меня, почему это работает ...):

digraph G {
    graph [rankdir=LR, overlap=false];
    subgraph cluster1 {
       d1;
       n1;
    }
    subgraph cluster2 {
       n2;
       d2;
    }
    n1 -> n2;
    n1 -> n2[constraint=false, dir=back];
    n2 -> n1[style=invis];
    d0 -> d1;
    d0 -> d2;
}

graphviz output

...