tmap
パッケージを使用すると、テーママップを非常に柔軟に生成することができる。
プロット作成のための構文は ggplot2
と似ているが、地図用に調整されている。 この vignette
は、数分でtmapを使い始めたい人のためのものである。 tmap
の詳細な説明は、Journal of Statistical Software に掲載された article にある
( JSS)。
しかし、その記事はtmapのバージョン1.11-2について述べており、これは古いものである。
その後、いくつかの大きな変更が行われ、その内容については vignette("tmap-changes")
に記述されている。
Rの地理的な機能に関するより詳しい情報は、オンライン版の書籍 Geocomputation with
Rを勧める。この本の Making maps with
R の章では、tmap
や他のパッケージを使った地図作成について、より多くの文脈と豊富なコード例を提供している。その他の良い資料として、
vignette の sf
packageがある。
手始めに世界地図を作成するのがよいだろう。 installing tmap の後、以下のような行で、以下に示すマップが作成されるはずである。
library(tmap)
data("World")
tm_shape(World) +
tm_polygons("HPI")
オブジェクト World
は sf package のクラス
sf
の空間オブジェクトである。これは data.frame
で、各行のジオメトリ(この場合はポリゴン)を含む特別な列である。
tmap にプロットするためには、まず tm_shape
で指定する必要がある。 レイヤーは、+
演算子で追加することができる。この場合、tm_polygons
。
tmapには多くのレイヤ関数があり、ドキュメントでは tm_
のプレフィックスで簡単に見つけることができる。
?'tmap-element'
も参照。
各マップは静止画としてプロットできるほか、"plot"
と
"view"
モードを使ってそれぞれインタラクティブに表示することができる。
モードの設定は関数
tmap_mode
、モード間のトグルは「スイッチ」
ttm()
(トグル・テーママップの略)で行うことができる。
tmap_mode("view")
tm_shape(World) +
tm_polygons("HPI")
形状は、空間オブジェクト(クラスが sf
, sp
, stars
, または raster
)である。
複数のシェイプ、およびシェイプごとの複数のレイヤーをプロットすることができる。
data(World, metro, rivers, land)
tmap_mode("plot")
## tmap mode set to plotting
tm_shape(land) +
tm_raster("elevation", palette = terrain.colors(10)) +
tm_shape(World) +
tm_borders("white", lwd = .5) +
tm_text("iso_a3", size = "AREA") +
tm_shape(metro) +
tm_symbols(col = "red", size = "pop2020", scale = .5) +
tm_legend(show = FALSE)
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
ファセットは、3つの方法で作成することができる。
tm_polygons
の第1引数)tmap_mode("view")
tm_shape(World) +
tm_polygons(c("HPI", "economy")) +
tm_facets(sync = TRUE, ncol = 2)
tm_facets
の引数 by
で空間データを分割するtmap_mode("plot")
## tmap mode set to plotting
data(NLD_muni)
$perc_men <- NLD_muni$pop_men / NLD_muni$population * 100
NLD_muni
tm_shape(NLD_muni) +
tm_polygons("perc_men", palette = "RdYlBu") +
tm_facets(by = "province")
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
tmap_arrange
機能を使用するtmap_mode("plot")
## tmap mode set to plotting
data(NLD_muni)
<- tm_shape(NLD_muni) + tm_polygons("population", convert2density = TRUE)
tm1 <- tm_shape(NLD_muni) + tm_bubbles(size = "population")
tm2
tmap_arrange(tm1, tm2)
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## old-style crs object detected; please recreate object with a recent sf::st_crs()
## Legend labels were too wide. Therefore, legend.text.size has been set to 0.27. Increase legend.width (argument of tm_layout) to make the legend wider and therefore the labels larger.
## The legend is too narrow to place all symbol sizes.
タイル状のベースマップは、レイヤ機能( tm_basemap
)で追加できる。
半透明のオーバーレイマップ(アノテーションラベルなど)は、tm_tiles
を使って追加することができる。
tmap_mode("view")
tm_basemap("Stamen.Watercolor") +
tm_shape(metro) + tm_bubbles(size = "pop2020", col = "red") +
tm_tiles("Stamen.TonerLabels")
preview
of the available tilemapsを参照。
このリストはRでもアクセス可能である: leaflet::providers
.
関数 tm_layout
と tm_view
は、それぞれ地図のレイアウトとインタラクティブな面を指定するために使用される。
これらの関数は、レイヤーの関数と同じように、例えば
tmap_mode("plot")
## tmap mode set to plotting
tm_shape(World) +
tm_polygons("HPI") +
tm_layout(bg.color = "skyblue", inner.margins = c(0, .02, .02, .02))
これらのオプションは、他のいくつかのオプションと同様に
tmap_options
で設定することもできる。これは、R の基本関数
options
と同じように動作する。
主な利点は、これらのオプションがグローバルに設定されるため、セッション期間中、各マップで指定する必要がないことである。
tmap_options(bg.color = "black", legend.text.color = "white")
tm_shape(World) +
tm_polygons("HPI", legend.title = "Happy Planet Index")
スタイルとは、tmapのオプションのうち、ある特定の設定のことである。
tmap_style("classic")
## tmap style set to "classic"
## other available styles are: "white", "gray", "natural", "cobalt", "col_blind", "albatross", "beaver", "bw", "watercolor"
tm_shape(World) +
tm_polygons("HPI", legend.title = "Happy Planet Index")
# see what options have been changed
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
# reset the options to the default values
tmap_options_reset()
## tmap options successfully reset
新しいスタイルを作成することができる。?tmap_options
を参照。
<- tm_shape(World) +
tm tm_polygons("HPI", legend.title = "Happy Planet Index")
## save an image ("plot" mode)
tmap_save(tm, filename = "world_map.png")
## save as stand-alone HTML file ("view" mode)
tmap_save(tm, filename = "world_map.html")
shiny で tmap を使用することが可能である。
# in UI part:
tmapOutput("my_tmap")
# in server part
$my_tmap = renderTmap({
outputtm_shape(World) + tm_polygons("HPI", legend.title = "Happy Planet Index")
})
動作例については、?renderTmap
を参照。
また、1回の関数呼び出しでマップを作成することも可能である。
この関数は、qtm
。
qtm(World, fill = "HPI", fill.pallete = "RdYlGn")
以下を実行。
tmap_tip()