Domanda

Sono un principiante a Graphviz e il linguaggio del punto. Stavo provando a generare grafici con subgprah di cluster. Tuttavia, quando ho cluster, ognuno con le posizioni del nodo esattamente specificata nello script, Graphviz non genera le caselle di contorno o le etichette per i cluster! In particolare, se ho il seguente script DOT:

digraph G{
subgraph cluster0{
label="Cluster 0"
a->b
}
subgraph cluster1{
label="Cluster 1"
c->d
}
}
.

Quindi il grafico generato è: grafico generato con cluster quando le posizioni dei nodi non sono specificate dall'utente

Tuttavia, con il seguente dot script, in cui specifico le posizioni del nodo dei 4 nodi esattamente:

digraph G{
subgraph cluster0{
label = "Cluster 0"
a[pos="10,200"]
b[pos="100,200"]
a->b
}
subgraph cluster1{
label = "Cluster 1"
c[pos="10,100"]
d[pos="100,100"]
c->d
}
}
.

Il grafico generato è: grafico generato con cluster quando le posizioni dei nodi sono specificate dall'utente

Si noti che in questo caso, né la scatola del contorno per i cluster né le etichette per i cluster sono stampati !! In questo caso, c'è una chiara demarcazione tra i 2 cluster come puoi vedere - i cluster non si sovrappongono, quindi in linea di principio graphviz non dovrebbe avere un problema mostrandoli, ho ragione?

Come posso dire a Graphviz di disegnare le scatole e le etichette del cluster del cluster, non importa cosa? Qualsiasi aiuto in questo sarà molto apprezzato !!

Grazie!

È stato utile?

Soluzione

Il motore di layout DOT non supporta l'attributo pos.

Per rendere un grafico con posizioni di tutti i nodi predefiniti, è necessario utilizzare neato o fdp con l'opzione -n.

neato non supporta i cluster (anche se Sembra che ora dovrebbe ). Fortunatamente, fdpdoes!

Pertanto, è possibile utilizzare il seguente comando:

dot -Tpdf -Kpdf -n -O filename.dot
.

o

fdp -Tpdf -n -O filename.dot
.

Sfortunatamente, le posizioni dei nodi relativi al cluster sono ok, ma i cluster sembrano ancora spostarsi da FDP (l'interruttore -n non ha fatto la differenza).

Non ho provato con l'ultima versione (ho usato 2.29.20120504), ma se l'ultima non funziona né né, questo potrebbe essere un caso per un rapporto di bug.

BTW, poiché si presume che le posizioni siano in pollici, ciò creerà un grafico molto grande.


.

Uscita Io ottengo con FDP (con o senza interruttore -n) - Ho aggiunto size=20 per limitare la dimensione dell'immagine:

Uscita FDP


.

Soluzione alternativa senza utilizzare pos:

digraph G{
subgraph cluster0{
label = "Cluster 0"
{rank=same; a->b;}
}
subgraph cluster1{
label = "Cluster 1"
{rank=same; c->d; }
}

a -> c [style=invis];
}
.

Altri suggerimenti

Il tuo codice è rendering fine in svg su viz.js .Sono in grado di vedere i bordi intorno ai cluster.

Forse la versione Graphviz che si utilizza è vecchia, un aggiornamento dovrebbe risolvere il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top