Layout Graphviz:如何呈现关于特定节点边连接点的图形?

Layout Graphviz:如何呈现关于特定节点边连接点的图形?,layout,graphviz,graph-drawing,Layout,Graphviz,Graph Drawing,我希望以与以下图形类似的布局渲染图形: 我试过这个: 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=paire

我希望以与以下图形类似的布局渲染图形:

我试过这个:

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"];

}
这产生了以下结果:(不是很好


有人能给我看一下最接近的解决方案吗?(可能不可能完全相同)

在我结束前,尽可能接近:

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;

}
将图形另存为
edp.gv
,并使用

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

一些评论:

  • 最后,我在所有边上放置了
    constraint=false
    ,并添加了不可见边以使三个节点居中
  • 通常我喜欢使用
    dir=back
    ,但在使用
    -Gsplines=ortho
    进行渲染时,我无法使用此选项
  • 如您所见,边的顺序是随机的

伙计,你是一个graphviz wizzard!Thanx,这很酷。你必须学习一些关于“neato”的知识-从未使用过它…我很高兴它有帮助!看看neato文档,在这种情况下,
-n
标志告诉neato不要计算节点的位置(它们是按点计算的)。