2


0

私はprefuse視覚化ツールキットの初心者で、一般的な質問がいくつかあります。 私の目的のために、私はprefuse(graphview / graphml)を使って最初の視覚化を実行したいと思います。 レンダリングされた後、ユーザーがノードをクリックすると、新しいビジュアライゼーション用に新しいxmlファイルを完全にリロードしたいと思います。 グラフを表示用に「プリパッケージ」できるようにするために、これを行いたいと思います。

例えば。 Tedを検索すると Tedロードに関連したxmlファイルを作成して、表示をレンダリングしたいと思います。 現在の表示では、TedにはBillとJoeというノードが関連付けられています。 Joeをクリックすると、表示が消えてJoeに関連付けられたxmlファイルが読み込まれます。 等々。

私は、すべてのノードとノードの関係情報を含む非常に大きなxmlファイルをロードし、prefuseがあるレベルから別のレベルへのホップを使ってこれを処理できるようにすることを検討しました。 しかし、最終的には、データのサイズが原因でシステムパフォーマンスの問題が発生すると確信しています。

どうもありがとう、John

2 Answer


1


もちろん、あなたが言ったように、1つの選択肢はすべてのノードをロードしてから見えなくする必要がないノードを設定することです。 Prefuseはかなりスケーラブルですが、もちろん限界があります。 2番目の選択肢は、新しいパネルを作成して古いパネルを交換することです。 私はオプション2を使用しました、そしてそれはかなりうまくいきます。


0


私はPrefuseのパフォーマンス問題に関するエキスパートとはほど遠いですが、巨大なxmlファイルを一度にロードするほうが、必要なノードだけをリロードするための処理を行うよりも、リソースの使用量が多いことは間違いありません。

使用しているグラフの種類はわかりませんが、視覚化オブジェクトからグラフを削除し、Activityをキャンセルし、Layoutをキャンセルし、ActionListを更新して最初からやり直す 'refreshGraph’を配置します。 それはおそらくこのようなことが判明するでしょう。

public void refresh(clickedNode){visualization.removeGroup(GRAPH); visualization.removeGroup(AGGR); activity.cancel(); actionList.cancel(); visualization.reset(); // XMLを処理してここにグラフをリロードします}