2011-11-29 14 views
7

Ho un grafico elaborato da neato e sto aggiungendo nuovi bordi ad esso. Tuttavia, non voglio che i vecchi nodi vengano spostati. Voglio che neato calcoli le nuove posizioni dei nuovi nodi e che i vecchi nodi rimangano nello stesso posto.graphviz - posizioni nodo fisse

strict graph { 
    node0 [pos="1,2"]; 
    node1 [pos="2,3"]; 
} 

E aggiungo nuovi bordi:

strict graph { 
    node0 [pos="1,2"]; 
    node1 [pos="2,3"]; 
    node1 -- node2 [len="3"]; 
    ... 
} 

Voglio ottenere le stesse posizioni sui vecchi nodi. Ad esempio:

strict graph { 
    node0 [pos="1,2"]; 
    node1 [pos="2,3"]; 
    node2 [pos="3,4"]; 
    ... 
} 

Come posso fare?

risposta

13

È possibile bloccare la posizione di un nodo impostando node attribute pin=true.

Oppure inserire un '!' alla fine dell'attributo pos: pos="34,12!"

+0

'$ cat g.dot grafico rigoroso { \t node0 [pos =" 2363.2,13230! "]; \t node1 [pos = "2452.2,1335!"]; \t node1 - node2 [len = "9.4"]; } e in esecuzione neato: '$ neato g.dot grafico rigoroso { \t nodo [label =" \ N "]; \t grafico [bb = "0,0,71043,8,9511e + 05"]; \t node0 [pos = "64603,8.9509e + 05", larghezza = "0.9027", altezza = "0.5"]; \t nodo1 [pos = "71011,38647", larghezza = "0,89579", altezza = "0,5"]; \t node2 [pos = "32.249,18", larghezza = "0.89579", altezza = "0.5"]; \t node1 - node2 [len = "9.4", pos = "70988,38634 69544,37849 1500.7,817.18 55.599,30.708"]; } 'dà numeri molto strani – microo8

+0

Yay! Il '!' la versione funziona anche con pygraphviz. Il pin = true versione si blocca neato (quando impostato su pygraphviz). – darkhipo

1

Eseguirlo con l'opzione -n ​​dovrebbe fare il trucco.

+0

funziona davvero, ma sappi che funziona solo con 'neato'. –