R でネットワーク プロットを実行しようとしています。IGraph を使用してネットワーク グラフのエッジを長くするにはどうすればよいですか?
私は実際には fruchterman-reingold レイアウトを使用したいと考えています。頂点がさらに離れているように、その力ベースのアルゴリズムを「弾力性」のあるものにする方法はありますか?
ありがとう。
R でネットワーク プロットを実行しようとしています。IGraph を使用してネットワーク グラフのエッジを長くするにはどうすればよいですか?
私は実際には fruchterman-reingold レイアウトを使用したいと考えています。頂点がさらに離れているように、その力ベースのアルゴリズムを「弾力性」のあるものにする方法はありますか?
ありがとう。
関数を使用して Fruchterman-Reingold アルゴリズムを制御できlayout.fruchterman.reingold
ます。参照: help('layout.fruchterman.reingold')
. 私がよく使用し、もう少し間隔を空けるセットアップは次のとおりです。
l <- layout.fruchterman.reingold(g,niter=500,area=vcount(g)^2.3,repulserad=vcount(g)^2.8)
plot(g,layout=l)
g
グラフ オブジェクトはどこにありますか。グラフのこれらのパラメーターのさまざまな値をテストして、何が機能するかを確認することをお勧めします。特にrepulserad
グラフの間隔に影響します。デフォルトはノード数の 2 乗なので、値が大きいほどグラフの間隔が広くなります。
layout.fruchterman.reingold
パラメーターを微調整してもアルゴリズムが希望どおりにならない場合は、次の手順を実行してください。すべてのレイアウトは、1 列目と 2 列目にそれぞれ x 座標と y 座標を含む一連の座標を返します。ここで好きな変換を適用できます。スケーリングしたいだけの場合は、単に使用します
L = layout.fruchterman.reingold(G)*s; #Scaling factor s
もちろん、より派手な変形も可能です。念のため、 を使用してマウスで手動でレイアウトを編集することもできますtkplot(G, layout=L)
。経由で座標を取得できますL = tkplot.getcoords(1)
。