GraphViz:特定のノードエッジ接続ポイントを尊重してグラフをレンダリングする方法は?
-
25-10-2019 - |
質問
次のレイアウトと同様のレイアウトでグラフをレンダリングしたい:
私はこれを試しました:
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
すべてのエッジに、目に見えないエッジを追加して、3つのノードを中心にします - 通常、私は使用するのが好きです
dir=back
, 、しかし、私はこれを使用することができませんでした-Gsplines=ortho
- ご覧のとおり、エッジの順序はランダムです...
所属していません StackOverflow