2014-12-02 1 views
5

Я пытался создать простой циклический граф с этим входным файлом DOT:Как создать циклический граф с использованием GraphViz DOT?

digraph { 
    rankdir=LR; 

    node0 [label = "0", group="bottom"]; 
    node1 [label = "1", group="bottom"]; 
    node2 [label = "2", group="top"]; 
    node3 [label = "3", group="top"]; 

    node0 -> node1; 
    node1 -> node0; 

    node2 -> node3; 
    node3 -> node2; 
} 

и до сих пор так хорошо, что приводит к:

First try at a cyclic graph

, но теперь я хочу иметь следующий отношения добавлены к узлам:

node0 -> node3; 
node3 -> node0; 

node2 -> node1; 
node1 -> node2; 

и удивительно, что это приводит к следующему:

Unsatisfactory horizontal node placement

Если удалить rankdir=LR;, я получаю вертикальный график. Мне нужен простой циклический граф, поскольку размещение узлов в пространстве связано с тем, к чему они относятся. Таким образом, новые соединения должны быть вертикальными, а узлы должны образовывать квадрат. Можно ли достичь использования DOT?

ответ

3

Это возможно можно достичь с помощью DOT; Я не играл с ним пару лет, поэтому я немного ржавый. Тем не менее, ваши данные отображаются в виде аккуратного бриллианта, если вы используете программу сестринской программы dot, которая должна быть частью обычной установки GraphViz.