頂点間の距離がエッジの重み * に対応するグラフを描画しようとしていますが、graphviz にはそのようなグラフを描画する方法があることがわかりました。Rでigraphパッケージ(具体的にはgraph.adkacency)を使用してこれを行う方法はありますか?
ありがとう、
ノーム
- (かつて尋ねられたように:頂点間の距離がエッジの重みに対応するグラフを描きます)
頂点間の距離がエッジの重み * に対応するグラフを描画しようとしていますが、graphviz にはそのようなグラフを描画する方法があることがわかりました。Rでigraphパッケージ(具体的にはgraph.adkacency)を使用してこれを行う方法はありますか?
ありがとう、
ノーム
このようなオブジェクトをプロットできるようにするには、すべての三角形に三角不等式が必要なため、これは不可能です。したがって、概算することしかできません。このために、「強制埋め込み」アルゴリズムを使用できます。igraphにはいくつかあります。私がよく使用するのは、Fruchterman-Reingoldアルゴリズムです。
詳細については、以下を参照してください。
library("igraph")
?layout.fruchterman.reingold
ノード間の距離は、エッジの絶対重みの逆数にいくらか対応することに注意してください。
Sacha Epskampが述べたように、データが完全でない限り、三角不等式に違反しないグラフを描くことはできません。ただし、そのような違反を最小限に抑えることを目的とした多次元尺度構成法(MDS)という名前の手法があります。
Rの実装の1つは、パッケージcmdscale
からのものです。stats
下部の例をお勧めします?cmdscale
:
> require(graphics)
>
> loc <- cmdscale(eurodist)
> x <- loc[,1]
> y <- -loc[,2]
> plot(x, y, type="n", xlab="", ylab="", main="cmdscale(eurodist)")
> text(x, y, rownames(loc), cex=0.8)
もちろん、任意のグラフィックパッケージをプロットx
しy
て使用することができます(具体的に問い合わせていましたigraph
)。
最後に、「多次元尺度構成法」または「MDS」を検索すると、他にも多くの実装が見つかると確信しています。幸運を。