0

次の問題の解決策が見つからないようです。

エッジをサイズ (幅ではなく長さ) でプロットしたい。

つまり、V1 頂点と V2 頂点の間のエッジが 20 に等しい値である場合、そのエッジを正確に 20 ピクセルでプロットしたいと考えています。

V2 と V3 の間の別のエッジが 60 である場合、そのエッジはプロット内で長くなります。

エッジのサイズまたは長さを指定する方法が見つかりません。プロット用の他の属性 (頂点サイズ、色、幅など) のような単純なコードラインでは不可能かもしれません。たぶん難しいです。

固定エッジが一定の形状を与える場合でも、グラフの形状方向は重要ではありません。

グラフは無向ですが、多くの頂点とエッジ シーケンスがあります。

4

1 に答える 1

3

igraph には、エッジの長さを直接制御できるエッジ属性はありません。主な理由は、グラフの構造が非常にまばらであるか、長さが非常に具体的でない限り、すべての長さの制約を正確に満たすことは不可能であるためです。

頭に浮かぶのは、多次元スケーリング(MDS) と呼ばれる手法だけです。詳細については説明しませんが、MDS の入力はn x nマトリックス ( nはグラフの頂点の数) であり、マトリックス セルにはポイント間の目的の距離が含まれています。MDS の出力は、実際の距離と目的の距離の合計二乗差が最小になる低次元空間 (通常は 2D 平面) での頂点の配置です。特に、必要な距離が 2D 空間で正確に満たされる場合、MDS はその構成を見つけます。layout_mdsigraph には、オブジェクトのメソッドにレイアウト アルゴリズムとして MDS が含まれていGraphます。

さて、ここでキャッチが来ます。距離行列のサイズはn x nであると述べました。問題は、これは、接続されたものだけでなく、すべての頂点ペアの距離を規定する必要があることを意味することです. 私の印象は、これはあなたの問題には当てはまらないということです(つまり、接続された頂点ペアの距離しかありません)。この場合、接続されていない頂点ペアの距離を何らかの方法で「概算」できない限り、MDS は役に立ちませんが、この場合はレイアウトも単なる概算になります。

もう 1 つのオプションは、Kamada-Kawai レイアウトです (Kamada, T. & Kawai, S. (1989) を参照してください。一般的な無向グラフを描画するためのアルゴリズムです。情報処理の手紙31、7-15)、ここでエッジはばねとしてモデル化され、各ばねは所定の平衡長さを持ちます。レイアウトは、物理的な平衡に近い構成に落ち着こうとします (この場合、すべてのスプリングの長さが平衡の長さに近いため、端点、つまり頂点に力がかかりません)。ここでの問題は、igraph の Kamada-Kawai レイアウトがばねの異なる平衡長を処理する準備ができていないことです。つまり、各リンクは同じ「望ましい」長さを持つと想定されます。鎌田・川井レイアウトを Python でゼロから実装したい場合は、別の可能性があります。

于 2012-12-13T19:48:56.713 に答える