ネットワークの動的進化

MikuHatsune2013-09-12

ネットワークが変化するという話を聞いていたのだが、質問で

「それでは日本の鉄道路線でシミュレーションしたら人口的に東京が首都ではなくなってしまったりしますかね?」

と聞いたら面白そうだけどわからないと言われたのでやってみる。
鉄道路線はめんどくさいので新幹線だけ取ってくる。開発途中のものも含めると隣接行列は下のデータ。しかし東京-名古屋-大阪間のリニアは描いていない。
新幹線駅の座標と一日の利用者数も下2chスレやwikiなどから補完した。

m <- read.csv("clipboard") # 隣接行列データをコピペして読み込む。
mname <- m[,1]
m <- m[,-1]
rownames(m) <- mname
idx <- match(colnames(m), station$station_name)
ll <- station[idx, c("lon", "lat")]
lay0 <- cbind(ll$lon, ll$lat)
library(igraph)
g <- graph.adjacency(m, mode="undirected")
V(g)$size <- log(station$people[idx], 10)
par(mar=c(0,0,0,0))
plot(g, layout=lay0)


これにRで描いた地図を重ねる。

library(spsurvey)
jpn_GA <- read.shape("JPN_adm/JPN_adm1.shp")
xl <- c(130, 145)
yl <- c(30, 45)
par(mar=c(0,0,0,0))
plot(jpn_GA, xlim=xl, ylim=yl)
par(new=TRUE, mar=c(0,0,0,0))
plot(g, layout=lay0)


ファッ!?!?
うまくいかなかったので低水準関数でゴリ押しする。

xl <- c(130, 145)
yl <- c(30, 45)
par(mar=c(0,0,0,0))
plot(jpn_GA, xlim=xl, ylim=yl, col="lightgreen")
points(station[ c("lon", "lat")], pch=16, cex=log(station$people, 100))
for(i in seq(nrow(m))){
	p1 <- station[station$station_name == colnames(m)[i], c("lon", "lat")]
	for(j in which(m[i,] == 1)){
		p2 <- station[station$station_name == colnames(m)[j], c("lon", "lat")]
		segments(p1$lon, p1$lat, p2$lon, p2$lat, lwd=3)
	}
}