目的

Natural Earthは世界各国の無料のベクターデータを提供.ここでは,世界の所得分布,ヨーロッパ州の人口分布を示す.世界の所得分布については,座標参照系を変えて,地図を描写する方法も紹介.

  • Natural Earthのデータを扱うパッケージが用意されているため,それを利用する.
    • 数値データなどの属性情報も含まれるため,コロプレス図(階級区分図)を作成可能.
    • パッケージをインストールする場合はinstall.packages("rnaturalearth")

ライブラリ:sftidyversernaturalearth

library(sf)
library(tidyverse)

#Natural Earth 
library(rnaturalearth)

世界地図

世界地図の読込

世界地図を可視化.1

  • ne_countries()で読込.
    • 地物(オブジェクト)とその属性をもつデータであるためsfクラスを指定.
    • 地図の解像度(scale)はmiddleを指示.
    • World_mapと名付ける.
World_map<-
  ne_countries(scale="medium",
               returnclass="sf")

とりあえず,世界地図を可視化.

  • 座標参照系(CRS):EPSG:4326:WGS84.
    • (アジアー太平洋が中心にくる)見慣れた地図ではないが,これは経度0度が縦軸の中心(本初子午線)に描かれているため.
    • 緯度0度が横軸の中心(赤道).
    • アジアー太平洋中心の地図は下記のアジアー太平洋中心を参照.
ggplot()+
  geom_sf(data=World_map)

データの中身

#最初の6行
World_map %>% 
  head()

世界地図上への所得分布の可視化

上の表を右側に進むと,所得を階級分けした列(income_grp)が現れる.

  • とりあえず,世界地図上へこれを可視化.
ggplot()+
  geom_sf(data=World_map, aes(fill=income_grp))

完成図形

  • 各国の枠(color)は白(white),線(size)の太さは0.001に指示.
  • 凡例を図の下に移動(legend.position="bottom")し,2行にする(guide_legend(nrow=2)).
  • 出典を地図の隅に示す(caption).
ggplot()+
  geom_sf(data=World_map, aes(fill=income_grp), 
          color="white", size=0.001)+
  scale_fill_viridis_d(option="G")+
  labs(fill="所得グループ",
       caption="出典:Natural Earth")+
  ggtitle("世界の所得分布")+
  theme_bw()+
  theme(legend.position="bottom")+
  guides(fill=guide_legend(nrow=2))

応用

座標参照系の変更

座標参照系(CRS)をESRI:54030に変更し,世界地図に所得分布を可視化.

ロビンソン図法

  • 世界地図に用いられる投影法の1つであるロビンソン図法(Robinson projection)に対応.
    • coord_sf()crsESRI:54030に変更するように指示.
    • World Map(アクセス日:2022-08-15)のBasic Examplesを参照した.
ggplot()+
  geom_sf(data=World_map, aes(fill=income_grp), 
          color="white", size=0.001)+
  scale_fill_viridis_d(option="G")+
  labs(fill="所得グループ",
       caption="出典:Natural Earth")+
  ggtitle("世界の所得分布(ロビンソン図法)")+
  theme_bw()+
  coord_sf(crs=st_crs("ESRI:54030"))+
  theme(legend.position="bottom")+
  guides(fill=guide_legend(nrow=2))

アジアー太平洋中心

  • 次に中心を本初子午線ではなく,アジアー太平洋を中心とした地図に変更.
  • 可視化すると,グリーンランドが横に広がりすぎるので,この地図では削除.
World_map %>% 
  filter(iso_a3!="GRL") ->
  Asia_Pacific_map 
  • EPSG:8859(ESRIの場合53037).
    • coord_sf()crsEPSG:8859に変更するように指示.
ggplot()+
  geom_sf(data=Asia_Pacific_map, aes(fill=income_grp), 
          color="white", size=0.001)+
  scale_fill_viridis_d(option="G")+
  labs(fill="所得グループ",
       caption="出典:Natural Earth")+
  ggtitle("世界の所得分布(アジアー太平洋中心)")+
  theme_bw()+
  coord_sf(crs=st_crs("EPSG:8859"))+
  theme(legend.position="bottom")+
  guides(fill=guide_legend(nrow=2))

ヨーロッパ州の人口分布

ヨーロッパ州の選抜

世界地図からヨーロッパ州に属する国を切り抜く(filter()).

  • 大陸の識別は上の表でcontinentの列.
    • Europe_mapと名付ける.
World_map %>% 
  filter(continent=="Europe") ->
  Europe_map

ヨーロッパ州地図

国名(英字2桁の国名コード)を記した地図を作成する.

  • R言語のコードは示さない.

人口分布

上の表を右側に進むと,人口(人)を示す(pop_est)が現れる.

  • これを可視化.
    • 人口は100万で割り,単位を百万人にする.
ggplot()+
  geom_sf(data=Europe_map, aes(fill=pop_est/1000000),
          color="white")+
  scale_fill_viridis_c(option="G", direction=-1)+
  labs(fill="百万人",
       caption="出典:Natural Earth")+
  ggtitle("ヨーロッパ州の人口分布")+
  coord_sf(xlim = c(-25,50), ylim = c(35,70))+
  theme_bw()

参考ウェブサイト

私たちのR: ベストプラクティスの探究20.11.1 世界地図(アクセス日:2022-08-14)

World Map–Basic Example(アクセス日:2022-08-15)

Rによる地理空間データの可視化


  1. Natural Earth(アクセス日:2022-08-15)のウェブサイトからシェープファイルをダウンロードすることもできる.( > Downloads > Medium scale data, 1:50m > Cultural > Admin 0 – Countries > Download countries (781.78 KB) version 5.1.1).この場合は,read_sf()でシェープファイルを読込.↩︎