本文へスキップ
からだにいいもの

Rのトピックスを中心に『まだ、まだ、知らない、役に立つ情報?』を発信します。

Rで解析:ggplot2で地図の描写や加工が楽々です「ggspatial」パッケージ

「ggplot2」パッケージで地図の描写や加工が楽々なパッケージの紹介です。本パッケージはsfデータ以外にも緯度経度情報をデータフレームで与えることで、OpenStreetMapから地図を取得し描写と加工が可能です。なお、「ggplot2」パッケージのシステムを利用しているので、「ggplot2」パッケージのコマンドを組み合わせて使用することが可能です。

パッケージバージョンは1.1.6。実行コマンドはwindows 11のR version 4.1.3で確認しています。

パッケージのインストール

下記コマンドを実行してください。

#パッケージのインストール
install.packages("ggspatial")
スポンサーリンク

実行コマンド

詳細はコマンド、各パッケージのヘルプを確認してください。

#パッケージの読み込み
library("ggspatial")
###データを準備#####
#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}
#札幌市役所,函館市役所,京都市役所の緯度経度
SKData <- tibble(x = c(141.3544, 140.7314, 135.7681),
                 y = c(43.0620, 41.7690, 35.0116),
                 city = c("札幌市", "函館市", "京都市"))
########
#プロット例
ggplot(SKData, aes(x, y)) +
  #OpenStreetMapの取得設定:annotation_map_tileコマンド
  #取得地図の形式を指定:typeオプション
  #"osm","opencycle","hotstyle","loviniahike","loviniacycle","hikebike"
  #"hillshade","osmgrayscale","stamenbw","stamenwatercolor","osmtransport"
  #"thunderforestoutdoors","cartodark","cartolight"
  #Map解像度の指定:zoominオプション;初期値:-2,解像度を上げるには-1/0を指定
  #透明度を指定:alphaオプション
  annotation_map_tile(type = "stamenbw", zoomin = 0, alpha = 0.3) +

  #取得地図にポイントを追加:geom_spatial_pointコマンド
  geom_spatial_point() +

  #取得地図にラベルを追加:geom_spatial_label_repelコマンド
  #ggrepel::geom_text_repelコマンドのオプションが使用可能
  #参考_https://www.karada-good.net/analyticsr/r-377/
  geom_spatial_label_repel(aes(label = city),
                           col = "red", segment.color = "#4b61ba",
                           segment.size = 1.5, box.padding = 1) +

  #スケールバーを追加:annotation_scaleコマンド
  #追加位置:locationオプション;"bl","br","tr","tl"
  #色を指定:bar_colsオプション
  annotation_scale(location = "tl",
                   bar_cols = c("#4b61ba", "white")) +

  #北向き矢印を追加:annotation_north_arrowコマンド
  #スタイルを指定:styleオプション;north_arrow_orienteering,
  #north_arrow_fancy_orienteering,north_arrow_minimal,
  #north_arrow_nautical;""は必要なし
  #北向きの基準:which_northオプション:"grid"/"true"
  annotation_north_arrow(style = north_arrow_minimal,
                         location = "br",
                         which_north = "true") +

  #width/heightを指定する:fixed_plot_aspectオプション
  fixed_plot_aspect(ratio = 1)
#経線緯線の描写:annotation_spatial_hline/annotation_spatial_vlineコマンド
ggplot(SKData, aes(x, y)) +
  coord_sf(crs = 3995) +
  #経線の描写:annotation_spatial_vlineコマンド
  annotation_spatial_vline(
    #線の描写間隔:interceptオプション
    intercept = seq(-180, 180, by = 10),
    crs = 4326, col = "red") +
  #緯線の描写:annotation_spatial_hlineコマンド
  annotation_spatial_hline(
    intercept = seq(89.999990, 90, by = 0.000001),
    crs = 4326, col = "blue")
###その他参考#####
#パッケージ付属データを利用
load_longlake_data()
ggplot() +
  annotation_map_tile(zoomin = -1) +
  #sfデータを使用して道路情報をプロット
  annotation_spatial(longlake_roadsdf, size = 2, col = "#4b61ba") +
  annotation_spatial(longlake_roadsdf, size = 1.6, col = "red") +
  #sfデータを使用して湖情報をプロット
  layer_spatial(longlake_depth_raster) +
  #ggplot2::scale_fill_viridis_cコマンド
  scale_fill_viridis_c(na.value = NA) +
  layer_spatial(longlake_depthdf, aes(fill = DEPTH_M)) +
  annotation_scale(location = "tl") +
  annotation_north_arrow(location = "br", which_north = "true")

出力例

・プロット例

・経線緯線の描写:annotation_spatial_hline/annotation_spatial_vlineコマンド

・その他参考

少しでも、あなたの解析が楽になりますように!!

このコードの続きをAIに聞く

スポンサーリンク
Prices and shipping availability may change. Please refer to the product page at time of purchase.
Content displayed on this site is provided by Amazon and may be updated or removed.
Amazon Associate, karada-good earns income through qualifying sales.