#はじめに
以前作成したプロジェクト参画機関の地図へのプロット(ggplot2で地図にプロジェクト参画機関の所在地をプロットする。)に関して、Rで緯度と経度を重ね合わせたネットワーク図を描いてみたいと思っていました。
最終的にはこちらにプロットした地図に、ノードだけでなくエッジも反映させたネットワークグラフを描画したいと思っています。
色々試行錯誤してみたのですが、結論的にはうまくできませんでした。
今後のために、途中経過を記載しておこうとおもいます。
また、詳しい方がいらっしゃったらアドバイス頂けますと幸甚です。
#snaパッケージを使ってみる。
以下のスライドでsnaパッケージを使用したグラフの作成方法が紹介されていました。
こちらのスライドを参考に作成にさせて頂き、以下のコードを記載しました。
#snaパッケージを読み込み
library(sna)
#二部グラフのcsvファイルを読み込み
proj <- read.csv("proj.csv", row.names = "proj")
proj <- as.matrix(proj)
result <- proj%*%t(proj)
#念のため「result」の内容を確認。
> result
k n s
k 2 0 1
n 0 1 0
s 1 0 1
#プロット地点の緯度・経度を記載したcsvファイルを読み込む。「locsaitama」と定義。
locsaitama <- read.csv("location.csv",header = T,row.names = 1)
#locsaitamaの緯度と経度が記載されている1列目と2列目を「coo」と定義。
coo <- locsaitama[,1:2]
#プロットする。
#coord = cooで、座標にcooを反映
#displaylabels = TRUEでラベルを表示。
#jitter = FALSEで頂点の座標のブレを無くす。
gplot(result,gmode = "graph",coord = coo,displaylabels = TRUE,jitter = FALSE)
最初の地図のプロットと比較してみると、位置的には緯度・経度が反映されているようです。
しかし、これに地図を重ねることができませんでした。
共立出版から2017年に出版された「Rで学ぶデータサイエンス8 ネットワーク分析 第2版」の第11章p302では、GGallyパッケージのggnetworkmap関数を用いた方法が記載されており、最終的にはこんな感じの表示をしたいと思っています。
(著者の先生のブログにグラフが掲載されています。)