SSブログ

R+igraphを用いた(グラフ理論の意味での)グラフの描画

インストール
install.packages("igraph")

使う前
library(igraph)

データ読み込み
adjmat <- read.table("adj.dat")
ここではadj.datは隣接行列データファイルとする
(列区切りは空白、行区切りは改行)

なお、有向グラフの隣接行列とは、一般に?
from i to jのエッジがある時にg_{ij}=1なるG=(g_{ij})である。
g_{ij}はfrom j to iの意味で使ってる場合、転置しないとだめ

転置
tadjmat<-t(adjmat)

隣接行列だと認識させた上でグラフオブジェクトgを生成
g<-graph.adjacency(tadjmat,mode="directed")

描画
plot(g)


ノードを動かせるように描画
tkplot(g)
tkplot(g,layout=layout.fruchterman.reingold,vertex.size=10)

LayoutメニューからFruchterman, Reingoldあたりで。

エッジで接続されたノード同士は距離の二乗に比例する引力。
すべてのノードはノード間距離に反比例する斥力。
Fa=d^2/l
Fr=-l^2/d
温度をだんだん下げて低いエネルギー状態になる配置に落ち着かせる。


次数分布
plot(degree.distribution(g,mode="in"),log="xy")

ノード数
vcount(g)

エッジ数
ecount(g)

平均最短距離
average.path.length(g)

クラスタリング係数
transitivity(g)

平均次数
sum(degree(g))/vcount(g)

グラフのsummary
summary(g)

グラフ密度
graph.density(g)

nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。