【问题标题】:Graphviz: How to render a graph respecting certain node-edge connection points?Graphviz:如何渲染关于某些节点边连接点的图?
【发布时间】:2016-08-07 00:21:29
【问题描述】:

我想以与以下类似的布局呈现图形:

我试过了:

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

}

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

谁能告诉我最接近的解决方案? (可能不可能完全一样)

【问题讨论】:

    标签: layout graphviz graph-drawing


    【解决方案1】:

    在结束之前我已经接近了:

    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 渲染时我无法使用它
    • 如您所见,边的顺序是随机的...

    【讨论】:

    • 伙计,你是一个图形化向导!谢谢,那很酷。必须学习一些关于“neato”的知识——还没用过……
    • 我很高兴它有帮助!看一下neato的文档,在这种情况下,-n 标志告诉neato不计算节点的位置(它们是通过点计算的)。
    猜你喜欢
    • 2014-11-03
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 2019-12-08
    • 1970-01-01
    • 2017-10-08
    相关资源
    最近更新 更多