2014-12-02 16 views
5

Ho cercato di creare un semplice grafico ciclico con questo file di input DOT:Come creare un grafico ciclico con 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; 
} 

e fin qui tutto bene, si traduce in:

First try at a cyclic graph

ma ora voglio avere la seguente rapporti aggiunti ai nodi:

node0 -> node3; 
node3 -> node0; 

node2 -> node1; 
node1 -> node2; 

e sorprendentemente, questo si traduce in:

Unsatisfactory horizontal node placement

Se rimuovo rankdir=LR;, ottengo un grafico verticale. Ho bisogno di un semplice grafico ciclico, dal momento che il posizionamento del nodo nello spazio ha una connessione a ciò a cui si riferiscono. Quindi le nuove connessioni dovrebbero essere verticali e i nodi dovrebbero formare un quadrato. È possibile ottenere questo risultato utilizzando DOT?

risposta

3

È possibile ottenere utilizzando DOT; Non ci gioco da un paio d'anni, quindi sono un po 'arrugginito. Tuttavia, i dati vengono resi come un diamante pulito se si utilizza il circo del programma gemello di dot, che dovrebbe far parte di una normale installazione GraphViz.