leafletで地図上にプロット

Hijiyama.R #3

kazutan

2015年11月28日

leafletとは

地図上にプロット

  • 地図上に、位置データを利用してプロット
    • 緯度経度データからポイントやタイルを指定
    • ポイントの密度や距離を可視化
    • 等高線なども可視化
    • etc…

leafletパッケージ

  • JavaScriptのオープンソースライブラリである“leaflet.js”をRでも利用できるようにしたパッケージ
  • {htmlwidgets}により実現
  • JavaScriptを使わなくてもRだけで利用可能!
  • 今すごい注目をあつめてて人気

特徴

  • htmlで動的な地図が作れる
    • ぐりぐり動かせる!
    • デフォルトの地図がOpenStreetMap!
    • レイヤー構造!
    • 標準でいろいろな機能を搭載!
    • Shinyでアプリケーションもつくれる!

leafletで地図描写

インストール

  • cranからインストール
install.packages("leaflet")
library(leaflet)

地図を表示

leaflet() %>% 
    addTiles()

ズームや位置の設定

leaflet() %>% 
    addTiles() %>% 
    setView(lng=135,lat=35,zoom=7)

基本的な考え方

以下の様な構造

  • leafletオブジェクト作る %>%
    • 地図タイルを選択 %>%
    • デフォルトの視点をセット %>%
    • プロットレイヤー %>%
    • プロットレイヤー …(ry
  • パイプ(%>%)を使わなくても可能
  • {ggplot2}のように一旦オブジェクトに放り込んでおくのもOK

データをプロット

前準備

プロット用データを準備

df <- data.frame(
    id = 1:5,
    lng = rnorm(5,mean=135,sd=0.5),
    lat = rnorm(5,mean=35,sd=0.5),
    pop = c("kosaki","chitoge","tsugumi","marika","yui")
)
knitr::kable(df)
id lng lat pop
1 134.5117 35.08045 kosaki
2 134.8459 34.38709 chitoge
3 134.9825 35.63328 tsugumi
4 134.6685 34.42948 marika
5 134.9346 35.35376 yui

プロットの基本

  • プロットする位置の情報が必須
    • 緯度(latなど)と経度(lng,lonなど)で指定
  • 引数にはデータフレームから変数を渡すと便利
  • あとは各種に対応して色々設定
  • 以下、これに追加していきます:
m <- leaflet(df) %>% addTiles()
m

マーカー

m %>% 
    addMarkers(lng=~lng,lat=~lat)

サークル

m %>% 
    addCircles(lng=~lng,lat=~lat,
                         radius=5,color="#09f",weight=20)

ポップアップ

m %>% 
    addPopups(lng=~lng,lat=~lat,
                        popup=~pop)

他にもたくさん!!

色々組み合わせていくと、こんなこともできます

出力方法

Export “widgets”

  • RStudio上で実行するとPlotsに表示される
  • これを“Export▼”から“Web Page…”を選択
  • htmlファイル(中身はleaflet出力地図のみ)が生成
    • これを他のhtmlファイルにiframeなどで放り込む

R Markdown

  • これが一番楽です
  • 普通に記述すれば出力されます
    • 標準の書式(css)であれば問題なし
    • もしcssをいじってると場合によっては崩れることも
  • Rmdスライドに組み込むには注意が必要
    • もし使いたい方はr-wakalangへ

Enjoy!

参考資料

  • leafletパッケージ公式ドキュメント
    • 必要に応じてleaflet.jsの資料を探してください
    • てかまだ日本語資料は散見してる状態
  • 来週12/5に、私がJapan.R 2015でまとまった内容を解説します
  • おたのしみに!!

SessionInfo

## Session info --------------------------------------------------------------
##  setting  value                       
##  version  R version 3.2.0 (2015-04-16)
##  system   x86_64, darwin13.4.0        
##  ui       RStudio (0.99.764)          
##  language (EN)                        
##  collate  ja_JP.UTF-8                 
##  tz       Asia/Tokyo                  
##  date     2015-11-28
## Packages ------------------------------------------------------------------
##  package     * version    date       source                             
##  devtools    * 1.9.1      2015-09-11 CRAN (R 3.2.0)                     
##  digest        0.6.8      2014-12-31 CRAN (R 3.2.0)                     
##  DT          * 0.1        2015-06-09 CRAN (R 3.2.0)                     
##  evaluate      0.8        2015-09-18 CRAN (R 3.2.0)                     
##  formatR       1.2.1      2015-09-18 CRAN (R 3.2.0)                     
##  highr         0.5.1      2015-09-18 CRAN (R 3.2.0)                     
##  htmltools     0.2.6      2014-09-08 CRAN (R 3.2.0)                     
##  htmlwidgets   0.5        2015-06-21 CRAN (R 3.2.0)                     
##  jsonlite      0.9.17     2015-09-06 CRAN (R 3.2.0)                     
##  knitr         1.11       2015-08-14 CRAN (R 3.2.0)                     
##  leaflet     * 1.0.1.9002 2015-11-24 Github (rstudio/leaflet@f89f66d)   
##  magrittr      1.5        2014-11-22 CRAN (R 3.2.0)                     
##  memoise       0.2.1      2014-04-22 CRAN (R 3.2.0)                     
##  revealjs    * 0.5        2015-11-27 Github (jjallaire/revealjs@86756f1)
##  rmarkdown   * 0.8.1      2015-10-10 CRAN (R 3.2.0)                     
##  rsconnect     0.4.1.9    2015-11-24 Github (rstudio/rsconnect@6c0621d) 
##  rstudioapi    0.3.1      2015-04-07 CRAN (R 3.2.0)                     
##  stringi       1.0-1      2015-10-22 CRAN (R 3.2.0)                     
##  stringr       1.0.0      2015-04-30 CRAN (R 3.2.0)                     
##  yaml          2.1.13     2014-06-12 CRAN (R 3.2.0)