Rで解析:海図作成が楽々です「ggOceanMaps」パッケージ

Rの解析に役に立つ記事
スポンサーリンク

海図作成が大変簡単なパッケージの紹介です。本パッケージは「ggplot2」のシステムを利用しているので体裁を整えるのが簡単なだけでなく、「ggspatial」,「ggrepel」パッケージと組み合わせることで色々な表現が可能です。

なお、パッケージの利用には海洋データが収録されている「ggOceanMapsData」パッケージのインストールが必須です。

パッケージバージョンは「ggOceanMaps」は1.3.4、「ggOceanMapsData」1.4は。windows11のR version 4.2.2で確認しています。

スポンサーリンク

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

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

#パッケージのインストール
#「ggOceanMaps」パッケージ
install.packages("ggOceanMaps")

#「ggOceanMaps」パッケージで使用する海洋データ「ggOceanMapsData」パッケージ
devtools::install_github("MikkoVihtakari/ggOceanMapsData")

実行コマンド

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

#パッケージの読み込み
library("ggOceanMaps")

###データ例の作成#####
#日本の東西南北端点の緯度経度
#https://www.gsi.go.jp/KOKUJYOHO/center.htm
JapanOceanArea <- data.frame(lon = c(122.55, 153.59, 122.55, 153.59),
                             lat = c(20.25, 45.33, 45.33, 20.25))
#札幌,東京,京都,大阪,福岡,南鳥島,与那国島の緯度経度
CityLonLat <- data.frame(Name = c("札幌", "東京", "京都", "大阪", "福岡",
                                  "南鳥島", "与那国島", "沖ノ鳥島", "択捉島"),
                         lon = c(141.34, 139.76, 135.76, 135.5, 130.4,
                                 153.59, 122.55, 136.04, 148.45),
                         lat = c(43.06, 35.68, 35.02, 34.7, 33.6,
                                 24.16, 24.27, 20.25, 45.33))
########

#海図のプロット:basemapコマンド
#緯度経度データ:dataオプション;形式はデータ例を参照
#直接緯度経度データ;limitsオプション;c(min経度, max経度, min緯度, max緯度)
#単一の30から88は北極,-88から-30は南極の極地図を表示
#水深情報の表示:bathymetryオプション;TRUE/FALSE
#氷河と氷床の表示:glaciersオプション;TRUE/FALSE
#中緯度で曲方向に回転:rotateオプション;TRUE/FALSE
#凡例の表示:legendsオプション;TRUE/FALSE
#水深情報の表現:bathy.styleオプション;
#"poly_blues","poly_greys","contour_blues","contour_grey" 
#水深情報の透明度:bathy.alphaオプション
#経度緯度を10進数ではなく投影投影で定義:projection.gridオプション;TRUE/FALSE
#bathy(水深),land(大陸),gla(氷),grid(線)のサイズ,色の指定;
#各設定の後ろに.col,.sizeで指定する
PlotBase <- basemap(data = JapanOceanArea, limits = NULL,
                    bathymetry = TRUE, glaciers = FALSE,
                    legends = TRUE, bathy.style = "poly_blues",
                    bathy.alpha = 0.8, projection.grid = FALSE,
                    land.col = "lightgreen", land.border.col = "black",
                    land.size = 0.1, gla.col = "grey95",
                    gla.border.col = "black", gla.size = 0.1,
                    grid.col = "grey70", grid.size = 0.1,)
#プロット
PlotBase

###使用例:「ggspatial」,「ggrepel」パッケージと組み合わせる#####
#「ggspatial」参考
#https://www.karada-good.net/analyticsr/r-736/
#「ggrepel」パッケージがなければインストール
#https://www.karada-good.net/analyticsr/r-377/
if(!require("ggrepel", quietly = TRUE)){
  install.packages("ggrepel");require("ggrepel")
}

#札幌,東京,京都,大阪,福岡,南鳥島,与那国島の緯度経度を点で示す
PlotBase +
  geom_spatial_point(data = CityLonLat,
                     aes(x = lon, y = lat),
                     color = "red",
                     crs = 4326) +
  stat_spatial_identity(data = CityLonLat,
                        aes(x = lon, y = lat, label = Name),
                        geom = "label_repel",
                        crs = 4326)

#札幌,東京,京都,大阪,福岡,南鳥島,与那国島を線でつなぐ
PlotBase +
  geom_spatial_path(data = CityLonLat,
                    aes(x = lon, y = lat),
                    color = "red",
                    crs = 4326)

#スケール,方角を追加する
PlotBase +
  annotation_scale(location = "tl") +
  annotation_north_arrow(location = "br", which_north = "true")
########

###使用例:水深の色を変更「colorRamp2」パッケージと組み合わせる#####
#「colorRamp2」パッケージがなければインストール
#https://www.karada-good.net/analyticsr/r-377/
if(!require("colorRamp2", quietly = TRUE)){
  install.packages("colorRamp2");require("colorRamp2")
}
#カラーパレットfunctionを作成
ColFun <- colorRamp2(breaks = c(0, 0.5, 1), 
                     colors = c("#ad8a80", "#756c6d", "#4b61ba"),
                     transparency = 0,
                     space = "RGB")
#ggplot2::scale_fill_manualコマンドで適応
#lengthを9にするのがポイント
PlotBase +
  scale_fill_manual(values = ColFun(seq(0, 1, length = 9)),
                    name = "水深 (m)")
########

出力例

・海図のプロット:basemapコマンド

・使用例:「ggspatial」,「ggrepel」パッケージと組み合わせる
札幌,東京,京都,大阪,福岡,南鳥島,与那国島の緯度経度を点で示す

・使用例:「ggspatial」,「ggrepel」パッケージと組み合わせる
スケール,方角を追加する

・使用例:水深の色を変更「colorRamp2」パッケージと組み合わせ


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

タイトルとURLをコピーしました