GraphViz: ¿Cómo representar un gráfico con ciertos puntos de conexión de borde de nodo?
-
25-10-2019 - |
Pregunta
Quiero renderizar un gráfico en un diseño similar al siguiente:
Intenté esto:
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"];
}
que generó el siguiente resultado :( no muy agradable ...
¿Alguien puede mostrarme la solución más cercana posible? (Probablemente no sea posible hacer exactamente lo mismo)
Solución
Lo más cerca que me puse antes de llamarlo una noche:
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;
}
Guarde el gráfico como edp.gv
y crea la imagen con
dot -Gsplines=none edp.gv | neato -n -Gsplines=ortho -Tpng -o edp.png
Resultado:
Algunos comentarios:
- Terminé poniendo
constraint=false
en todos los bordes, y agregue bordes invisibles para centrarse los tres nodos - Normalmente me gusta usar
dir=back
, pero no pude usar esto al renderizar con-Gsplines=ortho
- Como puede ver, el orden de los bordes es aleatorio ...
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow