問題タブ [graphstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Strange behavior of graph stream
I am developing an application using the GraphStream library.
- When using the standard viewer of the library every thing is normal (click inside a node to manipulate it).
- When i am embedding it in my application, it act very strange. to manipulate its node, I have to click outside the node to get control of it.
I think this has to do with the mouse events.
How to solve this?
EDit
I have solved this partially by the following change: I had a JSplitPane containing a JPanel. this later containing the view from GraphStream library. i removed the JPanel and i put the view from GraphStream library directly into the JSplitPane.
but i still dont know why the first solution did not work
java - GraphStream: より完全なチュートリアルの紹介?
バックグラウンド
私は と の両方が初めてGraphStream
ですJava
。ただし、私は のような他の OOP 言語の経験がありますC++
。個人的には、チュートリアルはGraphStream
非常にまばらだと思います。たとえば、Layout
API では、どのレイアウト アルゴリズムが有効かについて言及されていません。したがって、より統合されたチュートリアルを探しています。
質問
を使用GraphStream
して、次の基本的な操作を実行できるようにしたいと考えています。
- グラフを
.dgs
- グラフを
.csv
- 自動レイアウトから指定レイアウトへの変更(そもそも有効なものも挙げてください)
- すべてのエッジ属性を変更します (例: 重み)
- sからtまでの長さl以下のパスを最大n 個見つけます。
- イベントを追加します (例: ノードのクリック、そのノードから表示するパスの長さに関するユーザー入力の取得、適切な剪定/成長)
コード
ノート
私はエクリプスを使用しています。リポジトリからGraphStream
、次のものをビルド パスに追加しました: gs-algo-1.3
、gs-core-1.3
、gs-openord-master
、およびgs-ui-1.3
DGS ファイル
CSSファイル
apache-spark - テキスト ファイルから双方向の一意の行を削除する
次のようなテキストファイルがあります。
上記のファイルは、無向グラフのエッジを表しています。グラフ内の重複したエッジを削除したい。上記の例では4,5 or 5,4
、グラフ内の同じエッジを表しているため、重複を引き起こすため、どちらかを削除したいと考えています。Apache SparkGraphstream
のライブラリを使用して、ファイルからグラフを視覚化しようとしています。GraphX
ただし、上記で説明したように重複ノードが存在するため、次のようなエラーが発生します
このような重複をテキスト ファイルから削除するにはどうすればよいでしょうか?
java - 親に対する子の比率が高いグラフを描画するアルゴリズム
比較的大量のビジネス要件 (70 個のデータ要素) を含む Excel ドキュメントの視覚化ツールに取り組んでいます。
目的は、Excel ファイルを見つめたときにすぐにはわからないデータの内部構造の一部を示すことです。構造は次のようになります。
ルート-->(
(コンポーネント 1)--->(サブコンポーネント a)--->(データ要素 1、データ要素 2、...、データ要素 30)、
(コンポーネント 2)--->(サブコンポーネント a)--->(データ要素 1、データ要素 2、...、データ要素 30)、
(コンポーネント 3)--->(サブコンポーネント a)--->(データ要素 2、データ要素 2、...、データ要素 30)
)
私が気づいているのは、次のことです。
グラフは構造を示すのには優れていますが、データを示すのは苦手です。テーブルはデータを表示するのには優れていますが、構造を表示するのは苦手です。
この時点で、GraphStream のデフォルトの自動レイアウトは使用できなくなりました。1 つのサブ コンポーネントに多数のデータ要素が関連付けられているため、自動レイアウトでは、それらの要素が重なって読み取れなくなるような方法でそれらの要素を配置することはできません。発生するのは一種の花の効果で、データ要素は親の周りに花びらが重なっているようなものです。
自動レイアウトを無効にすると、自分でノードを配置する必要があります。グラフストリームは次のように述べています。
必要に応じて座標を固定します。使用する単位を「グラフ単位」と呼びます。ただし、後で説明するように、ビューアはピクセルとパーセントの 2 つの単位をサポートしています。
http://graphstream-project.org/doc/Tutorials/Graph-Visualisation/1.0/
結局のところ、これは難しい問題か、私が遅いかのどちらかです。ノードを配置することができませんでした。これは読みやすい方法です。
私が試したこと:
- 親に対する子の配置: for ループを使用してノードを反復処理します (振り返ってみると、n レベルをサポートするためにこれを再帰的に実装する価値があるかもしれません)、ルートから始めます。ルートの子の数を 2 で割った値 (整数除算では 3/2 = 1) を決定し、これを中間と呼びます。コンポーネント 1 の X 位置を i - 中央に設定します。y 位置をルート y 位置 - 1 に設定します。このようにして、親が子の上に中央に配置される「ツリー」構造を作成できます。
他人の子供が、この世界のどこが悪いのか...
残念ながら、これは実際にはうまくいきません。単一のコンポーネントは問題ありませんが、同じレベルに他の親がいる場合、その子は他のすべての親の子と重なります。これは、子が親に対して相対的に配置されているために発生し、実際には、子供が行きたい位置が他の誰かの子供によって占められていることを認識していません。
だから今、私は何をすべきかわかりません。まだ存在しないノードを考慮してノードを配置できません。いくつかのアイデアの断片がありますが、それらはすべて複雑に見えます。
ですから、地獄のコードに足を踏み入れる前に、私がこの質問をしたのは、おそらく私が読み取り可能なグラフを描画しなければならない最初の人になることはできないと感じたからです。おそらくこれを行う確立された方法があります。
参考までに、これらはアイデアの断片です。
個々のグラフ要素を独自の位置に責任を持って作成し、子に対して相対的に配置するか、そこに欠けているようにします。
位置決めソリューションと組み合わせてカメラを操作することを検討してください。特定の時間に表示できるノードの数を制限します (多すぎる場合は、他の人の子を殺します)。クリックされたコンポーネントに基づいて、ズームとパンを使用します。
再帰。知っている言葉です。冗談はさておき、私は以前に再帰を使用したことがあり、グラフ、特に循環構造のない私のようなグラフは、実際には再帰的な解決策を求めています。私は実際に、別のプロジェクトで再帰的なアプローチを使用してグラフを描画しましたが、同じ状況になりました。他の親の子を描画する再帰パスを認識するにはどうすればよいですか? 私はおそらく、再帰的なアプローチについてブレインストーミングを行う必要があります。
ビューポート内の相対的な不動産を表す新しいデータ構造を作成します。領域に分割します。ノードは相対領域を占有します。2 つのノードが同じ相対領域を占有することはできません。誰かが他人の子供の上に座ろうとしたときの対処法を考えてみましょう。実際にこの記事を書いているときに思いつきました。
私が得たのはそれだけです、皆さんはどう思いますか?私の問題をすでに解決しているノード配置のためのよく知られたアルゴリズムはありますか? 私のアイデアの断片の中で、最も有望に思えるのはどれですか?
java - グラフストリームのアトリビュートでノードを並べ替える
Graphstream のノードのコレクションを属性でソートしようとしています。どうすればこれができるのかわかりません。
この関数は、ノードのセットを属性とともに返しますが、ソートはしていません。
計算された属性でノードのコレクションをソートするにはどうすればよいですか?