地図上に航空路線を描く

Rのsna、maps、ggplot2などのパッケージを用いて地図上にネットワークを描画する例です。

こちらのサイト  network maps with ggpggnetworkmaplot2 にあるような航空路線描画を日本地図上にしてみたかったので、2015年の国内路線の旅客輸送数について上位50路線を描いてみました。

空港に関する情報は北海道大学情報基盤センターのウェブサイトから、旅客輸送数に関するデータは国土交通省の「平成27年航空輸送統計(暦年)の概況について」(PDF)から得たものを使用しています。

使用するパッケージを事前にインストールしておきます

install.packages("network")
install.packages("sna")
install.packages("maps")
install.packages("geosphere")
install.packages("ggplot2")
install.packages("GGally")


以下のRコードを実行します。

library(network)
library(sna)
library(maps)
library(ggplot2)
library(GGally)

rownames(airports) <- airports$airport
flights.net <- network(flights[,1:2], directed = FALSE)

flights.net %v% "lat" <- 
 airports[network.vertex.names(flights.net), "latitude"]
flights.net %v% "lon" <- 
 airports[network.vertex.names(flights.net), "longitude"]
flights.net %v% "type" <- 
 as.character(airports[network.vertex.names(flights.net), "type"])
flights.net %v% "degree" <- degree(flights.net, gmode = "graph") 

jpn <- ggplot(map_data("world2", "japan"), aes(x = long, y = lat)) +
 geom_polygon(aes(group = group), color = "grey65",fill = "grey90")
ggnetworkmap(jpn, flights.net, size = 7, node.group = type,
 node.alpha = 0.6, weight = degree, ring.group = degree,
 great.circle = TRUE,  segment.color = "steelblue", segment.alpha = 0.4)

イメージ 1