2009-09-25 7 views
19

Sto cercando di modellare un certo flusso utilizzando graphviz, e io non riesco a capire come modellare il seguente grafico di condividere lo stesso centro orizzontaleCome forzare tutti i nodi nella stessa colonna in graphviz?

digraph exmp { 
    A -> B -> C -> D 
    C -> E [constraint=false] 
    A -> C [style="dotted", constraint=false] 
    A -> D [style="dotted", constraint=false] 
    B -> D [constraint=false] 
    D -> A [style="dashed", constraint=false] 
    C -> A [style="dashed", constraint=false] 


    subgraph cluster_hackToSinkIt { E -> F } 
    { rank="sink" E F } 
} 

questo si traduce nel grafico seguente:

rendered image

La mia domanda è: come posso posizionare E-> F in D tale che si trova nella stessa colonna?

+0

L'immagine è rotta ora. Ho provato a ricrearlo, ma ottengo errori da graphviz –

risposta

25

Almeno as of May 2007, non si può forzare "colonne" per sé, ma si può applicare peso ai bordi che dovrebbero aiutare l'allineamento forza. Ma in realtà, in questo caso, se si aggiunge un lato invisibile da D a E, si ottiene l'allineamento verticale.

digraph exmp { 
    A -> B -> C -> D 
    C -> E [constraint=false] 
    A -> C [style="dotted", constraint=false] 
    A -> D [style="dotted", constraint=false] 
    B -> D [constraint=false] 
    D -> A [style="dashed", constraint=false] 
    C -> A [style="dashed", constraint=false] 
    D -> E [style="invis"] // <---- important new line 


    subgraph cluster_hackToSinkIt { E -> F } 
    { rank="sink" E F } 
} 

fixed dot image

Io non sono a conoscenza di alcun modo per forzare i bordi per una parte o dall'altra.

+0

Ho rimosso la domanda su come forzare i bordi e creerò una nuova domanda per quello. Altrimenti sarebbe difficile giudicare quale risposta sarebbe la risposta corretta. –