2009-10-02 4 views
24

Я пытаюсь отобразить ребра, выходящие справа налево (т.е. в обратном направлении), используя точку:справа налево кромками в точке (GraphViz)

C <- A -> B 

Лучшее, что я мог сделать, это:

digraph { 
    a -> b; 
    c -> a [dir="back"]; 
    {rank=same;c a b} 
} 

.. это хорошо, за исключением того, что я не люблю использовать c -> a, когда ребро направлено в другую сторону.

Итак, я хотел поделиться этим решением (которое, похоже, не упоминалось на SO), и проверить, не хватает ли я чего-то очевидного.

См: http://www.graphviz.org/doc/info/attrs.html#k:dirType

+0

Это не решает проблему, что ранг узлов для края ac по-прежнему не обращается относительно графика, если вы не напишете его 'c -> a'. Хотелось бы просто написать 'a <- c'. : / – Evi1M4chine

ответ

32

У меня нет альтернативы к вашему использованию директории, но я могу сделать его немного короче, если вы хотите, выравнивание по горизонтали, используйте rankdir свойство графа, чтобы заставить направление слева направо.

digraph { 
    rankdir=LR; 
    a->b; 
    c->a [dir="back"]; 
} 
4

Для того, чтобы края указывают в обратном направлении по умолчанию:

digraph { 
    edge [dir="back"]; 
    a -> b; 
    c -> a; 
} 

Затем переопределить значение по умолчанию, чтобы указать вперед:

c -> d [dir="forward"];