2015-06-07 13 views
18

Ho provato a usare xlp e ho seguito anche questo thread graphviz (http://www.graphviz.org/content/how-use-xlp-attribute-positioning-external-labels-xlabel), ma nessuno dei due ha mai funzionato.Graphviz graph positioning xlabels

Questo è il mio codice dot:

digraph { 
    forcelabels=true; 
    rankdir=LR; 
    graph[ranksep=1,nodesep=.5]; 
    node[shape=box]; 
    "start" [xlabel="start",xlp="0,0",shape=doublecircle,label=" "]; 
    "requested"->"fault"; 
    "requested"->"progress"; 
    "start"->"requested"; 
    "progress"->"fault"; 
    "progress"->"progress"; 
    "progress"->"complete"; 
    "fault" [xlabel="fault",shape=doublecircle,label=" "]; 
    "complete" [xlabel="complete",shape=doublecircle,label=" "]; 
} 

E questo è quello che sembra: enter image description here

Idealmente iniziare, colpa, e completo sarebbe solo direttamente sotto i nodi, ma posso' t sembra posizionare correttamente gli xlabels.

+0

ho la stessa identica problema, voglio anche posizionare le etichette sotto i nodi, ma sembra non esserci tutorial o nulla su come farlo. –

+0

Ho provato xlabels, ma il loro posizionamento sembra essere rotto –

+0

Ho guardato i dati generati dal punto - e cambiare le informazioni xlp non sembra fare nulla cf. http://www.graphviz.org/content/how-use-xlp-attribute-positioning-external-labels-xlabel Allo stesso modo con la modifica dei valori pos effettivi. – Donnied

risposta

9

Se si utilizza neato con il flag -n2, si dovrebbe essere in grado di impostare la posizione di xlabel. Dovresti comunque specificare la posizione di ogni nodo.

Quindi, se si ha un file chiamato lb.gv con il seguente contenuto:

digraph{ 
    forcelabels=true; 
    rankdir=LR; 
    graph[ranksep=1,nodesep=.5,margin=0.3,bgcolor=Transparent]; 

    node[shape=box]; 
    start [pos="0,0", xlp="23,54", xlabel=start, shape=doublecircle, label= " "]; 
    requested [pos="100,0"]; 
    progress [pos="250,-66"]; 
    fault [pos="400,70", xlp="424,124", xlabel=fault, shape=doublecircle,label= " "]; 
    complete [pos="400,-66", xlp="424,-10", xlabel=complete, shape=doublecircle,label= " "]; 
    requested->fault; 
    requested->progress; 
    start->requested; 
    progress->fault; 
    progress:w->progress:_; 
    progress->complete; 
} 

è possibile eseguire neato -n2 -Tpng lb.gv > test.png

Questo è quello che ho ottenuto:

graphviz

+1

Nota: questo * obbliga * a posizionare tutto in modo esplicito, il che è un dolore e metà sconfigge lo scopo di graphviz. –

+0

Affronto lo stesso problema, sembra che la funzione per evitare di posizionare tutto in modo esplicito sia ancora non disponibile? – Kumpelka