OpenFlights.orgのデータを使って、世界の空港のネットワークグラフを作成し、igraphを用いて、ハブになる空港を表示してみました。
【実行環境】
macOS 10.13.5
R version 3.4.4
まず、はじめにOpenFlights.orgのデータのairports.datとroutes.datをExcelなどで編集し、Pajek形式にまとめました。このネットワークは、各空港(ノード)とそれぞれを結ぶ直行便(エッジ)で構成されています。
直行便がより多い空港がより重要なハブ空港であると仮定して、page.rank関数を用いてページランクを計算しました。
library(igraph)
g <- read.graph("airports_link.net", format="pajek")
score <- page.rank(g, weights = NA)$vector
sort(score, decreasing=T)[1:10]
上位10位の計算結果は、以下のようになりました。(空港名でなく、空港がある都市名になっています。)
1. Atlanta
2. Chicago
3. Los Angeles
4. Dallas-Fort Worth
5. Paris
6. London
7. Singapore
8. Beijing
9. Denver
10. Frankfurt
雑ですが、可視化も行ってみました。
xy <- cbind(V(g)$y, V(g)$x)
V(g)$size <- 1
V(g)$frame.width <- 0.1
E(g)$width <- 0.02
E(g)$color <- "green"
E(g)$arrow.size <- 0.02
plot(g, layout=xy)
全体的に雑な分析になってしましましたが、Rはパッケージも充実しており可視化も容易なので、今後も使って行こうと思います。