Domanda

Voglio rendere un grafico in layout simile a quello seguente:

voluto

Ho provato questo:

digraph EDP
{
  graph [colorscheme=paired12];
  node [label="\N", shape=box, style="rounded,filled", colorscheme=paired12, color=8, fillcolor=7, width="1.2", fontname="Arial narrow", fontsize=12];
  edge [colorscheme=paired12, color=8, fontsize=11, fontname="Arial narrow"];

  src [label="Source"];
  dst [label="Destination"];
  filter [label="Filter"];

  src -> dst [label="Encoding process"];
  src -> filter [label="a"];
  filter -> dst [label="b"];
  src -> filter [dir=back, label=c];
  filter -> dst [dir=back, label=d];
  src -> dst [dir=back, label="Decoding process"];

}

che ha generato il seguente risultato :( Non è molto bello ...

mio

Qualcuno mi può la soluzione più vicino possibile mostrare? (Probabilmente non è possibile make esattamente lo stesso)

È stato utile?

Soluzione

Così vicino come ho avuto prima di chiamare una notte:

digraph EDP
{
  graph [colorscheme=paired12];

  node [label="\N", shape=box, style="rounded,filled", colorscheme=paired12, color=8, fillcolor=7, width="1.2", fontname="Arial narrow", fontsize=12];
  edge [colorscheme=paired12, color=8, fontsize=11, fontname="Arial narrow"];

  src [width=3.5, label="Source"];
  dst [width=3.5, label="Destination"];
  filter [label="Filter"];

  edge[constraint=false];
  src -> dst [label="Encoding\nprocess"];
  src -> filter [label="a"];
  filter -> dst [label="b"];
  dst -> filter [label="c"];
  filter -> src [label="d"];
  dst -> src [label="Decoding\nprocess"];

  edge[style=invis, constraint=true];
  src->filter->dst;

}

Salva il grafico come edp.gv e creare l'immagine con

dot -Gsplines=none edp.gv | neato -n -Gsplines=ortho -Tpng -o edp.png

Risultato:

più vicina uscita graphviz possibile

Alcune osservazioni:

  • I finito per mettere constraint=false su tutti i bordi, e aggiungere bordi invisibili ad avere i tre nodi centrato
  • Di solito mi piace usare dir=back, ma non è stato in grado di utilizzare questo durante il rendering con -Gsplines=ortho
  • Come si può vedere, l'ordine dei bordi è casuale ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top