igraph には、エッジの長さを直接制御できるエッジ属性はありません。主な理由は、グラフの構造が非常にまばらであるか、長さが非常に具体的でない限り、すべての長さの制約を正確に満たすことは不可能であるためです。
頭に浮かぶのは、多次元スケーリング(MDS) と呼ばれる手法だけです。詳細については説明しませんが、MDS の入力はn x nマトリックス ( nはグラフの頂点の数) であり、マトリックス セルにはポイント間の目的の距離が含まれています。MDS の出力は、実際の距離と目的の距離の合計二乗差が最小になる低次元空間 (通常は 2D 平面) での頂点の配置です。特に、必要な距離が 2D 空間で正確に満たされる場合、MDS はその構成を見つけます。layout_mds
igraph には、オブジェクトのメソッドにレイアウト アルゴリズムとして MDS が含まれていGraph
ます。
さて、ここでキャッチが来ます。距離行列のサイズはn x nであると述べました。問題は、これは、接続されたものだけでなく、すべての頂点ペアの距離を規定する必要があることを意味することです. 私の印象は、これはあなたの問題には当てはまらないということです(つまり、接続された頂点ペアの距離しかありません)。この場合、接続されていない頂点ペアの距離を何らかの方法で「概算」できない限り、MDS は役に立ちませんが、この場合はレイアウトも単なる概算になります。
もう 1 つのオプションは、Kamada-Kawai レイアウトです (Kamada, T. & Kawai, S. (1989) を参照してください。一般的な無向グラフを描画するためのアルゴリズムです。情報処理の手紙、31、7-15)、ここでエッジはばねとしてモデル化され、各ばねは所定の平衡長さを持ちます。レイアウトは、物理的な平衡に近い構成に落ち着こうとします (この場合、すべてのスプリングの長さが平衡の長さに近いため、端点、つまり頂点に力がかかりません)。ここでの問題は、igraph の Kamada-Kawai レイアウトがばねの異なる平衡長を処理する準備ができていないことです。つまり、各リンクは同じ「望ましい」長さを持つと想定されます。鎌田・川井レイアウトを Python でゼロから実装したい場合は、別の可能性があります。