48

以下に示すグラフを生成するために、graphviz (ドット) を使用しています。左下隅のノード (赤い楕円) は、そのエッジが隣接するノードのいくつかのエッジと交差するため、不快感を引き起こします。ノードの配置を特定の領域に制限する方法はありますか?

エッジが他のいくつかのエッジと交差するグラフ

4

5 に答える 5

62

非表示の制約を作成して、赤いノードを他のすべてのノードの左側に表示することができます。

redNode -> leftmostNode [style=invis];

前:

前

後:

後

于 2011-08-11T16:19:02.087 に答える
29

@Jannis、これに対する回答にまだ興味がある場合、実際には個々のノードの配置を制御する方法があります-「pos」属性を使用します。

http://www.graphviz.org/doc/info/attrs.html#d:pos

この例として、次のように書くことができます。

n [pos="3,5!"];

nそれはノードが正確にあることを強制します(3,5)

ただし、これはレイアウトエンジン「fdp」および「neato」でのみ機能します。

于 2010-12-30T23:19:31.977 に答える
9

個々のノードの配置を制御する手段を知りません。それを行うには、最終的なグラフがどのように見えるかを知る必要があるため、実際には意味がありませんが、1 つのノードを手動で配置すると、残りのグラフのレンダリング方法が変更されます。

.dotファイルでノードが定義されている順序を変更し、グラフ レベルで属性nodesepと属性を微調整することで、この問題を解決しました。ranksepこれは改良のプロセスです。見栄えがよくなるまで、一度にいくつかの項目を微調整します。

また、グラフを としてレンダリングし、SVGVisio (または別のエディター) にインポートして、気に入らないノードを手動で再配置することもできます。

于 2010-03-19T11:11:20.070 に答える