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))
#&#26413;&#24140;,&#26481;&#20140;,&#20140;&#37117;,&#22823;&#38442;,&#31119;&#23713;,&#21335;&#40165;&#23798;,&#19982;&#37027;&#22269;&#23798;&#12398;&#32239;&#24230;&#32076;&#24230;
CityLonLat <- data.frame(Name = c("&#26413;&#24140;", "&#26481;&#20140;", "&#20140;&#37117;", "&#22823;&#38442;", "&#31119;&#23713;",
                                  "&#21335;&#40165;&#23798;", "&#19982;&#37027;&#22269;&#23798;", "&#27798;&#12494;&#40165;&#23798;", "&#25246;&#25417;&#23798;"),
                         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))
########

#&#28023;&#22259;&#12398;&#12503;&#12525;&#12483;&#12488;:basemap&#12467;&#12510;&#12531;&#12489;
#&#32239;&#24230;&#32076;&#24230;&#12487;&#12540;&#12479;:data&#12458;&#12503;&#12471;&#12519;&#12531;;&#24418;&#24335;&#12399;&#12487;&#12540;&#12479;&#20363;&#12434;&#21442;&#29031;
#&#30452;&#25509;&#32239;&#24230;&#32076;&#24230;&#12487;&#12540;&#12479;;limits&#12458;&#12503;&#12471;&#12519;&#12531;;c(min&#32076;&#24230;, max&#32076;&#24230;, min&#32239;&#24230;, max&#32239;&#24230;)
#&#21336;&#19968;&#12398;30&#12363;&#12425;88&#12399;&#21271;&#26997;,-88&#12363;&#12425;-30&#12399;&#21335;&#26997;&#12398;&#26997;&#22320;&#22259;&#12434;&#34920;&#31034;
#&#27700;&#28145;&#24773;&#22577;&#12398;&#34920;&#31034;:bathymetry&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#27703;&#27827;&#12392;&#27703;&#24202;&#12398;&#34920;&#31034;:glaciers&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#20013;&#32239;&#24230;&#12391;&#26354;&#26041;&#21521;&#12395;&#22238;&#36578;:rotate&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#20961;&#20363;&#12398;&#34920;&#31034;:legends&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#&#27700;&#28145;&#24773;&#22577;&#12398;&#34920;&#29694;:bathy.style&#12458;&#12503;&#12471;&#12519;&#12531;;
#"poly_blues","poly_greys","contour_blues","contour_grey" 
#&#27700;&#28145;&#24773;&#22577;&#12398;&#36879;&#26126;&#24230;:bathy.alpha&#12458;&#12503;&#12471;&#12519;&#12531;
#&#32076;&#24230;&#32239;&#24230;&#12434;10&#36914;&#25968;&#12391;&#12399;&#12394;&#12367;&#25237;&#24433;&#25237;&#24433;&#12391;&#23450;&#32681;:projection.grid&#12458;&#12503;&#12471;&#12519;&#12531;;TRUE/FALSE
#bathy&#65288;&#27700;&#28145;&#65289;,land(&#22823;&#38520;),gla&#65288;&#27703;&#65289;,grid&#65288;&#32218;&#65289;&#12398;&#12469;&#12452;&#12474;,&#33394;&#12398;&#25351;&#23450;;
#&#21508;&#35373;&#23450;&#12398;&#24460;&#12429;&#12395;.col,.size&#12391;&#25351;&#23450;&#12377;&#12427;
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,)
#&#12503;&#12525;&#12483;&#12488;
PlotBase

###&#20351;&#29992;&#20363;:&#12300;ggspatial&#12301;,&#12300;ggrepel&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12392;&#32068;&#12415;&#21512;&#12431;&#12379;&#12427;#####
#&#12300;ggspatial&#12301;&#21442;&#32771;
#https://www.karada-good.net/analyticsr/r-736/
#&#12300;ggrepel&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
#https://www.karada-good.net/analyticsr/r-377/
if(!require("ggrepel", quietly = TRUE)){
  install.packages("ggrepel");require("ggrepel")
}

#&#26413;&#24140;,&#26481;&#20140;,&#20140;&#37117;,&#22823;&#38442;,&#31119;&#23713;,&#21335;&#40165;&#23798;,&#19982;&#37027;&#22269;&#23798;&#12398;&#32239;&#24230;&#32076;&#24230;&#12434;&#28857;&#12391;&#31034;&#12377;
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)

#&#26413;&#24140;,&#26481;&#20140;,&#20140;&#37117;,&#22823;&#38442;,&#31119;&#23713;,&#21335;&#40165;&#23798;,&#19982;&#37027;&#22269;&#23798;&#12434;&#32218;&#12391;&#12388;&#12394;&#12368;
PlotBase +
  geom_spatial_path(data = CityLonLat,
                    aes(x = lon, y = lat),
                    color = "red",
                    crs = 4326)

#&#12473;&#12465;&#12540;&#12523;,&#26041;&#35282;&#12434;&#36861;&#21152;&#12377;&#12427;
PlotBase +
  annotation_scale(location = "tl") +
  annotation_north_arrow(location = "br", which_north = "true")
########

###&#20351;&#29992;&#20363;:&#27700;&#28145;&#12398;&#33394;&#12434;&#22793;&#26356;&#12300;colorRamp2&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12392;&#32068;&#12415;&#21512;&#12431;&#12379;&#12427;#####
#&#12300;colorRamp2&#12301;&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
#https://www.karada-good.net/analyticsr/r-377/
if(!require("colorRamp2", quietly = TRUE)){
  install.packages("colorRamp2");require("colorRamp2")
}
#&#12459;&#12521;&#12540;&#12497;&#12524;&#12483;&#12488;function&#12434;&#20316;&#25104;
ColFun <- colorRamp2(breaks = c(0, 0.5, 1), 
                     colors = c("#ad8a80", "#756c6d", "#4b61ba"),
                     transparency = 0,
                     space = "RGB")
#ggplot2::scale_fill_manual&#12467;&#12510;&#12531;&#12489;&#12391;&#36969;&#24540;
#length&#12434;9&#12395;&#12377;&#12427;&#12398;&#12364;&#12509;&#12452;&#12531;&#12488;
PlotBase +
  scale_fill_manual(values = ColFun(seq(0, 1, length = 9)),
                    name = "&#27700;&#28145; (m)")
########

出力例

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

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

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

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


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

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