tmap: version changes

この vignette は、 JSS paper で詳細に説明されている tmap 1.11-2 と比較して、tmap 2.x/3.x の主な変更点を要約している。この論文のバージョン2.x/3.xのコードは、以下の場所にある。 vignette("tmap-JSS-code") にある。

初めてtmapを使う人のために vignette("tmap-getstarted") を参照。

関数名の変更: tm_, tmap_

バージョン 2.0 以降では、関数 qtm を除き、すべての tmap 関数に tm_ または tmap_ という接頭辞が付く。 tmap version 1.x と同様、レイヤーの関数は tm_ で始まる。 tmap 1.x では、animation_tmaptmap_arrange のように、他の関数の名前に一貫性がなかった。 tmap 2.x/3.x では、これらの関数の先頭に tmap_ を付けている。
例えば animation_tmaptmap_animation に改名された。

空間データクラス

tmap 1.xでは、ベクタデータを表現するために sp、ラスタデータを表現するために raster。 tmap 2.xでは、ベクタデータを表現するために sf、ラスタデータを表現するために raster。 tmap 3.xでは、ベクタデータを表現するために sf、ラスタデータを表現するために stars

sf (simple features) オブジェクトは、 sp オブジェクトよりもシンプルな構造を持っている。
sf オブジェクトは、対応する行のジオメトリを含む特別なジオメトリ列を持つ data.frame にほかならない。 このようなジオメトリは、空間点、線、多角形のいずれか、またはこれらの任意の組み合わせで「geometrycollection」(参照 vignette("sf1"))。 tm_polygons などのレイヤ機能は、描画することになっているもの(この場合はポリゴン)だけを描画する。 新しく追加されたレイヤ機能 tm_sf は、すべてのジオメトリを描画する。

最後に tmap のすべてのデータオブジェクト( land を除く)は sf のオブジェクトに変換されている。 オブジェクト landstars オブジェクトに変換された。

tm_tiles

レイヤー機能を追加し、タイルのレイヤーを容易にした。 バージョン1.xでは、すでにベースマップを追加することが可能であった。 バージョン 2.0 では、明示的なレイヤ関数 tm_basemaptm_tiles によって、これを容易にしている。
前者はベースマップタイルを、後者はオーバーレイタイルを作成する。 違いは tm_basemap レイヤーは常に一番下に描画されるのに対し、(オーバーレイ) tm_tiles レイヤーの描画順はプロットコールから導かれることである。 オーバーレイレイヤーは半透明でないと意味がない。

ヒント: https://leaflet-extras.github.io/leaflet-providers/preview/ のすべてのタイルマップが使用できる。
これらの地図の名前は、リストオブジェクト leaflet::providers でも確認することができる。

data(World, metro)
tmap_mode("view")

tm_basemap(leaflet::providers$CartoDB.PositronNoLabels, group = "CartoDB basemap") +
tm_shape(World) +
    tm_polygons("HPI", group = "Countries") +
tm_tiles(leaflet::providers$CartoDB.PositronOnlyLabels, group = "CartoDB labels") +
tm_shape(metro) +
    tm_dots(col = "red", group = "Metropolitan areas")

sigma

tmapのオプション、スタイル、およびフォーマット

tmapには多くのオプションがある。
バージョン 1.x では、デフォルト値は tm_layouttm_view に格納されていた。 これらのオプションを変更するために、tm_style_graytm_format_World のようなラッパー関数が使用されている。

バージョン2.0では、オプションはグローバルオプションと同様の方法で保存される。 tmapオプションのリストを取得し、関数 tmap_options を用いてオプションを設定することができる。
その動作は基本関数 options に似ている。

スタイルとは、マップを特定の方法でスタイル設定するために使用されるオプションの設定である。
tmap_style と設定すると、現在のオプションは新しいスタイルに従って上書きされる。 その変化は tmap_options_diff で確認できる。tmap_options_reset でリセットすることができる。

data(World)
qtm(World, fill = "life_exp")


tmap_style("classic")
## tmap style set to "classic"
## other available styles are: "white", "gray", "natural", "cobalt", "col_blind", "albatross", "beaver", "bw", "watercolor"

qtm(World, fill = "life_exp")


tmap_options_diff()
## current tmap options (style "classic") that are different from default tmap options (style "white"):
## $sepia.intensity
## [1] 0.7
## 
## $frame.double.line
## [1] TRUE
## 
## $fontfamily
## [1] "serif"
## 
## $compass.type
## [1] "rose"
## 
## $basemaps
## [1] "Esri.WorldTopoMap"
## 
## $basemaps.alpha
## [1] 0.5

tmap_options_reset()
## tmap options successfully reset

tmap に含まれるスタイルは以下の通りである。"white" , "gray" , "natural" , "cobalt" , "col_blind" , "albatross" , "beaver" , "bw" , "classic" . 新しいスタイルは、それぞれ tmap_style_savetmap_style_load で保存、読み込みが可能である。

バージョン1.xでは、tmap は、tm_format_World のような、いくつかの定義済みフォーマット関数を含んでいた。
バージョン2.0では、これらは一般的な関数 tm_format に置き換えられることとした。 この機能により、利用可能なフォーマットの検索や、特定のフォーマットの設定を行うことができる。
tm_format_add 関数により、新しいフォーマットを作成することができる。

tmap_format()
## available formats are: "World", "World_wide", "NLD", "NLD_wide"
panorama <- tmap_format("World")
panorama$asp <- 6
tmap_format_add(panorama, name = "panorama")
## format panorama succesfully added. Use this format with tm_format("panorama")
tmap_format()
## available formats are: "World", "World_wide", "NLD", "NLD_wide", "panorama"

スタイルと異なり、フォーマットはグローバルに設定することができない。 その代わり、各プロットで指定する必要がある。

tm_shape(World) + tm_polygons("HPI") + tm_format("panorama")

# or: qtm(World, fill = "HPI", format = "panorama")

カラーパレット

Viridis パレット ( viridis / viridisLite パッケージ) はネイティブでサポートされている。 例 qtm(World, "HPI ", fill.palette =" -plasma")。 カラーブルワーのパレット名と同様に、マイナス記号を付けるとパレットが反転することに注意。 カラーブルワーと viridis パレットをインタラクティブに探索するには、tmaptools::palette_explorer() を参照。

カラーパレットマッピングを定義する引数がより直感的になった。 新たに追加されたレイヤ機能引数 midpointstretch.palette は、auto.palette.mapping を置き換える。

フィルタ、NAとNULLの差

引数 filter が tm_shape に追加された。 搭載されるフィーチャは通常通り可視化される。
除外されたフィーチャも可視化されるが、カラーマッピングはされていない。 その代わり、レイヤ関数の新しい引数である colorNULL で色付けされる。 colorNA との違いに注意。これは、欠損データのあるフィーチャを着色するために使用される。

このフィルターの可能性を示すために、次のコードはヨーロッパの国々だけを色付けした地図を作成する。

tm_shape(World, filter = World$continent=="Europe") +
    tm_polygons("HPI", id = "name")

sigma

ヨーロッパ以外の国は、colorNULL、デフォルトでは grey95 で色分けされている。 tm_polygons などのレイヤ機能、および tmap_options で調整することができる。

また、データには欠損値(コソボとモルドバ)があり、colorNA (デフォルトでは grey85 )で色付けされている。