2013-05-28 2 views
8

ノードとエッジが提供され、すべてのノードの座標リストがうまくレイアウトされたライブラリを探しています。しかし、の固定位置は、ですが、は、レイアウトアルゴリズムが尊重すべきすべてのノードではありません。インクリメンタルグラフのノードグラフレイアウトライブラリ

私はgraphviz(fdp、neato)をこれまで試みてきましたが、これは特定のノードの位置を保持できないように見えて、それらの周りにレイアウトを構築しました。

ライブラリはPythonで使用できる必要がありますので、Pythonまたはc/C++でなければなりませんので、独自のバインディングを記述することができます。

以下の図は、私が探しているものを正確に示しています(これはライブラリとして存在しないuDrawプロジェクトです)。

uDraw incremental layout

+1

この問題の解決方法を見つけましたか? –

+0

私は3D空間で部分グラフと似たようなことをしていますが、難しいです。各更新によってグラフデータ全体をクライアントに送信しない限り、大きなノードに相対的な座標を何らかの形で保存する必要があります。私はまだ解決策がありません。役に立つものは見つかりましたか? – inf3rno

答えて

1

それがあなたにとって有用である場合は、逆にgraphvizでこれを行うことができます。これを行うには、最初に右側のグラフをプロットし、ノード15,16、および17をstyle=invisに設定して、左側のグラフをプロットします。それはあなたにここに示されているものと同じレイアウトを与えるでしょう。

左のグラフを最初にプロットすると、最初にソフトウェア(dotなど)がノード15,16、および17のない「見栄えの良い」グラフをプロットしようとすることがあります。ノード15,16,17が後で必要とされる場合には、ノード15,16,17が設置されるのに十分なスペースを取らないようにしてください。例えば、ノード11とノード12との間にノード12aを挿入しようとすると、上に示したグラフにそのノードのための余裕がないであろう。一方、ノード12aが最初にプロットされていても見えない場合、ソフトウェアはそのスペースを割り当て、後でそれを含めることができる。

関連する問題