はじめに
Rのsfパッケージを使って、神戸市の校区境界と学校所在地をプロットしようとしています。前回はデータのダウンロードから加工(部分抽出・変数追加)までやってみました。
今回はプロットしてみます。
GISデータをプロットしてみる
例1:plot( )を使う
まずは中学校区を標準のplot( )を使ってみます。
plot(MS_poly_kobe)
各属性データにもとづいて塗り分けられた図が作成されました。
3番目の図だけ欲しかったら、
plot(MS_poly_kobe[3])
とします(出力は割愛)。
例2:geom_sf( )を使う
ggplot2での作図に慣れている人は、geom_sf( )を使うと便利です。
ggplot() + geom_sf(data = ES_poly_kobe) + theme_minimal()
例3:離散変数に従って塗り分ける
3つのカテゴリーをランダムに割り当てた離散変数に従って、小学校区を塗り分けてみます。
面を塗る色を指定する引数はfill
、境界線の色を指定する引数はcolour
です。
ggplot() + geom_sf(data = ES_poly_kobe, aes(fill = rnd_cat), colour = "white") + theme_minimal()
例4:連続変数に従って塗り分ける
次はランダムに作成した連続変数に従って塗り分けてみます。
ggplot() + geom_sf(data = ES_poly_kobe, aes(fill = rnd_cont)) + scale_fill_gradient(low = "#FFFFFF", high = "#336699") + theme_minimal()
例5:複数の図を重ねる
geom_sf( )を使えば、複数の図を重ねることも簡単です。 中学校区境界の白地図に、中学校所在地を重ねてみましょう。 所在地のプロットの色は連続カラースケールにしてみます。
ggplot() + geom_sf(data = MS_poly_kobe, fill = "white") + geom_sf(data = MS_point_kobe, aes(colour = rnd_cont)) + scale_colour_gradient(low = "#FF6B6B", high = "#336699") + theme_minimal()
レイヤーの順序を入れ替えるときは注意が必要です。面データを後から重ねるときは、下のように透過度100%(alpha=0
)にしておかないと、先にプロットした所在地が見えなくなってしまいます。
ggplot() + geom_sf(data = MS_point_kobe, aes(colour = rnd_cont)) + geom_sf(data = MS_poly_kobe, alpha = 0) + scale_colour_gradient(low = "#FF6B6B", high = "#336699") + theme_minimal()
出力は省略します。
おわりに
- 元々の属性にある「学校名」などに従って塗り分けるときは、凡例を表示しないようにしておく方がいいです。
ggplot() + geom_sf(data = ES_poly_kobe, aes(fill = A27_004), alpha = 0.5) + theme_minimal() + theme(legend.position = "none")
- 久しぶりの投稿ですが、猫2匹は元気にしています。
参考資料
- GISデータに関する基礎的な解説がわかりやすいです。