始める無料で始める

なぜグリーンランドはこんなに大きく見えるの?

プロットをよく見てみましょう。実際にはアメリカ本土の約3分の1の大きさしかないのに、なぜグリーンランドのほうが大きく見えるのでしょうか?

経度と緯度をそのままプロットの x 軸と y 軸に描くと、場所に関係なく「経度1度の長さは同じ」とみなすことになります。しかし地球はおおむね球体なので、経度1度が表す距離は緯度によって変わります。赤道付近では約111kmですが、極では0kmになります。

球面上の位置を2次元平面に描く方法は投影法(projection)で表されます。ここで使っているデフォルト(正距円筒図法、Equirectangular projection とも呼ばれます)は、極に近い領域の横方向の距離を歪めてしまいます。球は平面ではないため、どの投影法にも何らかの歪みが生じますが、投影法によって保持しようとする性質(面積・角度・距離など)が異なります。

tmap では、tm_shape()projection 引数を使って、プロットの投影法を切り替えることができます。

(注:ggplot2 のプロットで投影法を変更する場合は、coord_map() 関数を使います。詳しくは ?coord_map() を参照してください。)

この演習はコースの一部です

R で地理空間データを可視化する

コースを見る

演習の手順

投影法の違いを見やすくするため、経度・緯度の等間隔グリッド線を追加する tm_grid() レイヤーを用意しています。

tm_shape() の呼び出し内で次を試してください。

  • 面積を保つよう設計された Hobo–Dyer 投影法(projection = "hd")。
  • 2つ目のプロットでは、局所的な角度と面積のバランスを取る妥協案として設計された Robinson 投影法(projection = "robin")。
  • おまけとして、直前のプロットに tm_style("classic") を追加し、tmap が地図表示のあらゆる側面をコントロールできる様子を見てみましょう。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

library(sp)
library(tmap)

# Switch to a Hobo–Dyer projection
tm_shape(countries_spdf) +
  tm_grid(n.x = 11, n.y = 11) +
  tm_fill(col = "population", style = "quantile")  +
  tm_borders(col = "burlywood4") 

# Switch to a Robinson projection
tm_shape(countries_spdf) +
  tm_grid(n.x = 11, n.y = 11) +
  tm_fill(col = "population", style = "quantile")  +
  tm_borders(col = "burlywood4") 

# Add tm_style("classic") to your plot
コードを編集して実行