2009-04-17 7 views
6

Sto usando Graphviz per disegnare un reticolo.
I nodi sono impostati di numeri.Come si impone la posizione y su un nodo quando si utilizza graphviz per disegnare reticoli?

Essendo un reticolo, vorrei che la posizione in altezza (la y) di un nodo rappresentasse il numero di elementi nell'insieme rappresentato dal nodo. Quindi la posizione x dovrebbe essere definita da graphviz per rendere la rappresentazione più pulita.

È possibile?

In base alla documentazione punto, dovrebbe esserci l'attributo pos che dovrebbe definire la posizione di un nodo. Ma sebbene abbia provato molte volte in molti modi diversi, non sono riuscito a ottenere alcun grafico in cui fosse definita la posizione di un nodo. Qualcuno ha avuto qualche successo con questo?

Quello che segue è il file dot classica che uso:

digraph G { 
"528 544\n640 768" -> "768 528"; 
"528 536\n530 539" -> "539"; 
"528 536\n530 539" -> "528"; 
"800 896 548\n944 566 728\n539 704 768" -> "704 768\n539 548"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
"768 539" -> "768"; 
"768 539" -> "539"; 
"768" -> "∅"; 
"944" -> "∅"; 
"944 528 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
"944 528 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
"944 528 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
"704 768\n539 548" -> "768 539"; 
"944 728\n539 566" -> "944"; 
"944 728\n539 566" -> "539"; 
"800 896 640\n944 560 528\n544 656 768" -> "528 544\n640 768"; 
"800 896 640\n944 560 528\n544 656 768" -> "944 656\n528 560"; 
"800 896 640\n944 560 528\n544 656 768" -> "944 800\n896 768"; 
"539" -> "∅"; 
"944 656\n528 560" -> "944"; 
"944 656\n528 560" -> "528"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "944 528 536\n530 566 560\n728 656 539"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 640\n944 560 528\n544 656 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 704 548\n528 530 544\n536 640 539"; 
"768 528" -> "768"; 
"768 528" -> "528"; 
"528" -> "∅"; 
"768 704 548\n528 530 544\n536 640 539" -> "528 544\n640 768"; 
"768 704 548\n528 530 544\n536 640 539" -> "704 768\n539 548"; 
"768 704 548\n528 530 544\n536 640 539" -> "768 528 530\n539 536"; 
"944 800\n896 768" -> "768"; 
"944 800\n896 768" -> "944"; 
"768 528 530\n539 536" -> "528 536\n530 539"; 
"768 528 530\n539 536" -> "768 539"; 
"768 528 530\n539 536" -> "768 528"; 
} 

Se qualcuno potrebbe scrivere un esempio di un file in cui l'altezza di un nodo è stato definito sarei molto grato.

risposta

7

Ho trovato la risposta.

Qui: http://www.linuxdevcenter.com/pub/a/linux/2004/05/06/graphviz_dot.html?page=2

Essenzialmente è possibile definire cosa regola di nodi deve essere allo stesso altezza. Per ottenere i nodi A e B alla stessa altezza devo aggiungere la riga: {rank = same; A B};

ecco un esempio simile a quello precedente, ma con i nodi costituiti destra:

digraph G { 
{rank=same; "768" "944" "539" "528" }; 
{rank=same; "768 539" "768 528" }; 
{rank=same; "768 640\n528 544" "528 536\n530 539" "768 704\n539 548" "944 728\n539 566" "944 656\n528 560" "944 800\n896 768" }; 
{rank=same; "800 896 548\n944 566 728\n539 704 768" "528 944 536\n530 566 560\n728 656 539" "800 896 944\n656 560 528\n544 640 768" "768 640 548\n528 530 544\n536 539 704" }; 
"768 640\n528 544" -> "768 528"; 
"528 536\n530 539" -> "539"; 
"528 536\n530 539" -> "528"; 
"800 896 548\n944 566 728\n539 704 768" -> "768 704\n539 548"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 728\n539 566"; 
"800 896 548\n944 566 728\n539 704 768" -> "944 800\n896 768"; 
"768 539" -> "768"; 
"768 539" -> "539"; 
"768" -> "∅"; 
"944" -> "∅"; 
"528 944 536\n530 566 560\n728 656 539" -> "528 536\n530 539"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 728\n539 566"; 
"528 944 536\n530 566 560\n728 656 539" -> "944 656\n528 560"; 
"768 704\n539 548" -> "768 539"; 
"944 728\n539 566" -> "944"; 
"944 728\n539 566" -> "539"; 
"800 896 944\n656 560 528\n544 640 768" -> "768 640\n528 544"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 656\n528 560"; 
"800 896 944\n656 560 528\n544 640 768" -> "944 800\n896 768"; 
"539" -> "∅"; 
"944 656\n528 560" -> "944"; 
"944 656\n528 560" -> "528"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 548\n944 566 728\n539 704 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "528 944 536\n530 566 560\n728 656 539"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "800 896 944\n656 560 528\n544 640 768"; 
"896 640 656 536\n530 728 539 704\n768 800 544 528\n548 944 566 560" -> "768 640 548\n528 530 544\n536 539 704"; 
"768 528" -> "768"; 
"768 528" -> "528"; 
"528" -> "∅"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 640\n528 544"; 
"768 640 548\n528 530 544\n536 539 704" -> "768 704\n539 548"; 
"768 640 548\n528 530 544\n536 539 704" -> "528 768 530\n539 536"; 
"944 800\n896 768" -> "768"; 
"944 800\n896 768" -> "944"; 
"528 768 530\n539 536" -> "528 536\n530 539"; 
"528 768 530\n539 536" -> "768 539"; 
"528 768 530\n539 536" -> "768 528"; 
} 
+0

+1, Ran e ha funzionato per me. Amo Graphviz per generare rapidamente diagrammi di stato. –

Problemi correlati