以下に示すグラフを生成するために、graphviz (ドット) を使用しています。左下隅のノード (赤い楕円) は、そのエッジが隣接するノードのいくつかのエッジと交差するため、不快感を引き起こします。ノードの配置を特定の領域に制限する方法はありますか?
5 に答える
非表示の制約を作成して、赤いノードを他のすべてのノードの左側に表示することができます。
redNode -> leftmostNode [style=invis];
前:
後:
@Jannis、これに対する回答にまだ興味がある場合は、実際には個々のノードの配置を制御する方法があります-「pos」属性を使用します。
http://www.graphviz.org/doc/info/attrs.html#d:pos
この例として、次のように書くことができます。
n [pos="3,5!"];
n
それはノードが正確にあることを強制します(3,5)
。
ただし、これはレイアウトエンジン「fdp」および「neato」でのみ機能します。
個々のノードの配置を制御する手段を知りません。それを行うには、最終的なグラフがどのように見えるかを知る必要があるため、実際には意味がありませんが、1 つのノードを手動で配置すると、残りのグラフのレンダリング方法が変更されます。
.dot
ファイルでノードが定義されている順序を変更し、グラフ レベルで属性nodesep
と属性を微調整することで、この問題を解決しました。ranksep
これは改良のプロセスです。見栄えがよくなるまで、一度にいくつかの項目を微調整します。
また、グラフを としてレンダリングし、SVG
Visio (または別のエディター) にインポートして、気に入らないノードを手動で再配置することもできます。