問題タブ [graph-layout]

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.

0 投票する
0 に答える
614 参照

c++ - ブースト グラフ レイアウト アルゴリズム (Fruchterman-Reingold)

ブースト レイアウトの使用に大きな問題があります。有向グラフと Fruchterman-Reingold レイアウト アルゴリズムを使用しています。私が使用するトポロジは、長方形トポロジです。シーンで約 200 の要素を整理する必要があります (そのために QT シーンとアイテムを使用しています)。Boost ライブラリは、要素の位置を計算するためだけに使用されます。私のアイテムはサイズの異なる長方形ですが、単純化するために一定であると言えます。私のアイテムのいくつかが時々互いに重なることを除いて、すべてがうまく機能します。引力と斥力の両方を変更しようとしましたが、それでもまったく機能しません。

私の質問は、要素を互いに押しのける方法があるということです。Fruchterman-Reingold アルゴリズムでジッター ポイントと呼ばれるものを見つけましたが、それを変更しても解決しませんでした。ポイント (topology<>::point_type) の代わりに長方形のサイズを使用する方法があるかもしれませんが、見つかりませんか?

すべてのアイデアと助けに感謝します。

0 投票する
2 に答える
1419 参照

algorithm - 頂点距離を最小化するアルゴリズム - Dwarf Fortress

ドワーフフォートレスというゲームをやっています。そして、私にとっての主な課題は、要塞のレイアウトを効率的に設計することです。つまり、移動距離を最小限に抑えるために、各業界の流れは可能な限り密集する必要があります。

例として、食品産業があります食品業界。灰色の各楕円は、1 つの建物を表します。それぞれの白い四角形は、建物の製品を表しています。

私の目標は、それらの建物間の距離がどのように接続されているかという意味で最小になるように、2D グリッド上に建物を配置するアルゴリズムを見つけることです。つまりfishery、 とloomは離れていてもかまいませんがloom、 とfarmer'sはできるだけ近づける必要があります。

現時点では、レイアウトをシミュレートするためにいくつかの既製のソフトウェアを使用することを検討していますが、アルゴリズムに関するいくつかのヒントは問題ありません。

現在、強制指向のアルゴリズムを検討していますが、離散グリッドの要件についてはわかりません。

質問の形式化: 離散座標で機能する Force Draw Graph アルゴリズムはありますか?

更新: AS3 で強制描画アルゴリズムの実装を見つけました (Web には JS バージョンも含まれています)。ディスクリート版に変換してみます。しかし、うまくいくかどうかは疑問です...

UPDATE2: コメントでさらにいくつかの制限が要求されました。各建物は、仮想グリッド上の単一のセルを占有します。建物は隣接するセルに配置できます。建物を重ねたり重ねたりすることはできません。(PS: ゲームでは、各建物には通常 3x3 のサイズが定義されていますが、より多くのアプローチを可能にするために、問題をより一般的なものにしたいと考えています)。

0 投票する
0 に答える
744 参照

graphviz - Graphvizで子ノードをレイアウトする方法

これが私のドット コードです。3 レベルのノードがあります。現在、第 3 レベル (下) には 1 行の子ノード (オレンジ色) がありますが、下のレベルが長すぎます。2 行の子ノードが必要です。

2 行の子ノードを取得する方法を教えてください。

0 投票する
2 に答える
1553 参照

d3.js - 力指向のレイアウトにカスタムの力関数を指定できますか?

力指向グラフ レイアウトの代替ファミリ力関数を試してみたいと思います。

ノードごとに、次のようなn_i「力関数」を定義できます。f_i

  • f_i ( n_i )同じようにゼロです。と
  • f_i ( n_j )、ここで、 は、他のノードによるn_i != n_jノード上の力です。n_in_j

ノード上の正味の力n_iは、力のベクトル和である必要があります。f_i ( n_j )ここで、n_j範囲は他のすべてのノード1です。

レイアウト アルゴリズムでこれらのカスタム フォース関数を使用するように d3.js に指示する方法はありますか?

[ d3.js の force-directed レイアウトのドキュメントには、組み込みの force 関数を微調整できるさまざまな方法が記載されていますが、まったく異なる force 関数、つまり、組み込みの力関数のパラメーターを微調整することによって達成することはできません。]


1 IOW、n_iその力関数から計算されたもの以外に、他の/追加の力がノードに作用してはなりませんf_i

0 投票する
0 に答える
107 参照

javascript - D3 レイアウトと家系図

D3 のレイアウトを使用して、複雑な家系図を表示しようとしています。私が終わらせたいのは次のようなものです:

つまり、ツリーの 2 つおきのレベルは通常のツリーのように動作しますが、他のすべてのレベルは異なるレイアウトで、各配偶者は同じレベルにあります。

D3 レイアウトでこれを行う方法はありますか? それとも、独自のレイアウト コードを作成する必要がありますか?

0 投票する
1 に答える
1370 参照

php - スイムレーン グラフの自動レイアウト

プロセスチャートをスイムレーン形式でレイアウトするのに役立つアルゴリズム/ライブラリを探しています。

例:

靴の製造と販売のプロセスは次のようになります (非常に単純化されています)。

  • 皮革会社が皮革を届ける
  • 靴屋は革から靴を作る
  • 靴の小売業者は靴を販売しています

この場合、これをスイムレーン形式で表示したいと考えています。つまり、各ロール (皮革会社、靴メーカー、靴小売業者) にはスイムレーンがあります。各スイムレーンには、対応するプロセスステップが表示されます。これは、UML アクティビティ図に非常に似ています。

これを行うことができるライブラリはありますか? d3.js を見てみましたが、自動レイアウトが可能かどうかはわかりません。

または、この特定の目的のためのライブラリがない場合、この場合に使用できる最先端のアルゴリズム (おそらく存在しますが、まだ見つけていません) はありますか?

0 投票する
1 に答える
1438 参照

java - JGraphX で有機的なレイアウトを自動的に呼び出す方法

私は JGraphX ライブラリを使用しており、 mxFastOrganicLayout を使用して自動レイアウトを実行しようとしています:

高速な有機レイアウトを適用する方法を知りたいのですが、ドキュメントではそれを と定義していmxFastOrganicLayoutます。問題は、次のようなコンポーネントに変換できないことです。

asはコンストラクタとしてmxGraphComponent取りませんが、取りますが、どちらが正しい手順のようですか? よろしくお願いします。mxFastOrganicLayoutmxFastOrganicLayoutmxGraph

0 投票する
0 に答える
539 参照

gephi - Gephiでの引力/反発の主要なパラメータとしての加重度?

Company xデンマークの自治体 (kommune) のリストに対する 2 つの企業 (およびCompany y) の総収益を視覚化するグラフを作成しようとしています。重み列に収益を含むエッジ テーブルを作成しました。

Gephi のすべてのノードの重み付けされた次数を計算しました。これにより、会社のノードのサイズと色を、重み付けされた Out-Degree (すべての地方自治体への総収益) によって決定できます。自治体ノードは、重み付けされたIn-Degree(2つの会社への総支出)によって決定されます。

これはすべて非常に優れていますが、ノート同士の引力/反発を決定する主要なパラメーターを加重度にできるようにしたいと考えています。つまり、会社のノードを、収益が最大の自治体に近づけたいと考えています。これを行う方法はありますか?

0 投票する
0 に答える
41 参照

alloy - Alloyの「影響レイアウト」

Alloy Visualizer のテーマを定義する場合、「Influence Layout」に関連するオプションがあります。通常、p->qがリレーションのエッジである場合r、レイアウトは のpqに配置され、エッジは下をr向きます。「Influence Layout」をオフにすると、グラフ内で同じレベルをr使用できるようにpなり、 -edge が水平方向を指すようになると予想されます。しかし、これは決して起こりません。実際、「Influence Layout」チェックマークがまったく効果があることを私は観察したことがありません。それは何をするためのものか?qr