日本列島は縦横ともに長い。
ので、沖縄県を余白部分に移動した地図を、よく見かける。
それ、R ではどうする?
シェイプファイルから読み込んだ都道府県境界の SpatialPolygonDataFrame をデータフレームに変換する。
library(maptools)
library(plyr)
library(ggplot2)
japan <- readShapeSpatial("japan_pref.shp")
japan@data$id = rownames(japan@data)
japan.points = fortify(japan, region = "id")
japan.df = join(japan.points, japan@data, by = "id")
次に、本土と沖縄の2つのデータフレームに分割する。
hondo.df <- japan.df[japan.df$PREF_CODE != 47,]
okinawa.df <- japan.df[japan.df$PREF_CODE == 47,]
そうしたら、大変申し訳無いが、南・北大東島は削除して、
okinawa.df <- okinawa.df[okinawa.df$long < 128.75,]
東へ 6度、北へ 17.5度移動。
okinawa.df$long <- okinawa.df$long + 6
okinawa.df$lat <- okinawa.df$lat + 17.5
ついでに、境界線データを作成。
border <- data.frame(
xx <- c(129, 132, 136, 136),
yy <- c( 40, 40, 43, 45))
でもって、ggplot2 でプロットする。
g <- ggplot()
g <- g + geom_path(data = hondo.df,
aes(long, lat, group = group), size = 0.2)
g <- g + geom_path(data = okinawa.df,
aes(long, lat, group = group), size = 0.2)
g <- g + geom_path(data = border, aes(xx, yy))
g <- g + coord_equal() + xlim(c(128, 148.5)) + ylim(c(27, 46))
print(g)
《結果》
実際には、右下の余白に凡例を配置すれば、バッチリだ。
|