私はgraphvizで作成したグラフを持っていますが、問題はエッジが互いに重なっていることです(各行に5〜7個のノードがあります)。そのため、ノードごとに接続するノードを判別するのは困難です。
エッジが互いに重ならないようにするにはどうすればよいですか?交差させても大丈夫です。
私はgraphvizで作成したグラフを持っていますが、問題はエッジが互いに重なっていることです(各行に5〜7個のノードがあります)。そのため、ノードごとに接続するノードを判別するのは困難です。
エッジが互いに重ならないようにするにはどうすればよいですか?交差させても大丈夫です。
ドットでレイアウトした有向グラフがあると仮定します。
エッジの重なりを防ぐための魔法のスイッチはないと思います。Graphvizは、箱から出してそれを実行しようとします。
グラフに応じて役立つ可能性のあるいくつかの提案:
別のアプローチは、グラフにオーバーラッププロパティを追加することです。許容されるプロパティは、scale(出力のサイズを大幅に増加させる)またはfalse(サイズをそれほど増加させないが、エッジがノードとオーバーラップする可能性がある)です。
overlap = scale;
オーバーラップ=falseを使用している場合は、属性を追加することでノードとのエッジのオーバーラップを取り除くことができますsplines=true:
overlap = false;
splines = true;
これにより、大きなグラフの生成時間が著しく遅くなります。
非常に些細なグラフでも、graphviz
(neato
、fdp
)がオーバーラップを生成していることがわかります。例えば:
graph G {
0;
1;
2;
3;
0--1 ;
1--2 ;
2--3 ;
3--0 ;
}
私のバージョンのコードでクロスを生成します2.38.0
。
ドキュメントから、これらの場合はさまざまなランダムシードを試すことをお勧めします。最終的には、より複雑な図の交差が避けられなくなりますが、エンジンが交差を回避するためにどれだけの努力を払うかはわかりません。
たとえば、これは私のために働いた:
neato -Gstart=5 file.dot -Tps -o file.ps