GraphViz:特定のノードエッジ接続ポイントを尊重してグラフをレンダリングする方法は?

StackOverflow https://stackoverflow.com/questions/8318253

  •  25-10-2019
  •  | 
  •  

質問

次のレイアウトと同様のレイアウトでグラフをレンダリングしたい:

wanted

私はこれを試しました:

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

}

次の結果が生成されました:(あまり良くありません...

my

誰かが私に最も近いソリューションを見せてくれますか? (おそらく、まったく同じようにすることはできません)

役に立ちましたか?

解決

私がそれを夜と呼ぶ前に私が手に入れたのと同じくらい:

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

結果:

closest possible graphviz output

いくつかの発言:

  • 私は置くことになりました constraint=false すべてのエッジに、目に見えないエッジを追加して、3つのノードを中心にします
  • 通常、私は使用するのが好きです dir=back, 、しかし、私はこれを使用することができませんでした -Gsplines=ortho
  • ご覧のとおり、エッジの順序はランダムです...
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top