Rでお遊び:何かに使えるかも?各都道府県を四角で表示!

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

各都道府県を四角で表示する日本地図データの紹介です。ggplot2パッケージなどで利用が可能です。

windows 11のR version 4.1.2で確認しています。

スポンサーリンク

日本地図データの作成

下記コマンドを実行してください。作業フォルダにJpanMiniMap.csvを保存します。

#tidyverseパッケージがなければインストール
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

JpanMiniMap <- tibble(
  #&#37117;&#36947;&#24220;&#30476;&#21517;
  Pref = c("&#21271;&#28023;&#36947;", "&#38738;&#26862;&#30476;", "&#23721;&#25163;&#30476;", "&#23470;&#22478;&#30476;", "&#31119;&#23798;&#30476;", "&#33576;&#22478;&#30476;", "&#21315;&#33865;&#30476;", "&#31179;&#30000;&#30476;", "&#23665;&#24418;&#30476;",
           "&#26032;&#28511;&#30476;", "&#26627;&#26408;&#30476;", "&#22524;&#29577;&#30476;", "&#26481;&#20140;&#37117;", "&#32676;&#39340;&#30476;", "&#23665;&#26792;&#30476;", "&#31070;&#22856;&#24029;&#30476;", "&#23500;&#23665;&#30476;",
           "&#38263;&#37326;&#30476;", "&#38745;&#23713;&#30476;", "&#30707;&#24029;&#30476;", "&#31119;&#20117;&#30476;", "&#23696;&#38428;&#30476;", "&#24859;&#30693;&#30476;", "&#28363;&#36032;&#30476;", "&#19977;&#37325;&#30476;",
           "&#20140;&#37117;&#24220;", "&#22856;&#33391;&#30476;", "&#21644;&#27468;&#23665;&#30476;", "&#20853;&#24235;&#30476;", "&#22823;&#38442;&#24220;", "&#40165;&#21462;&#30476;", "&#23713;&#23665;&#30476;", "&#23798;&#26681;&#30476;",
           "&#24195;&#23798;&#30476;", "&#39321;&#24029;&#30476;", "&#24499;&#23798;&#30476;", "&#24859;&#23195;&#30476;", "&#39640;&#30693;&#30476;", "&#23665;&#21475;&#30476;", "&#31119;&#23713;&#30476;", "&#22823;&#20998;&#30476;",
           "&#23470;&#23822;&#30476;", "&#20304;&#36032;&#30476;", "&#29066;&#26412;&#30476;", "&#40575;&#20816;&#23798;&#30476;", "&#38263;&#23822;&#30476;", "&#27798;&#32260;&#30476;"),
  #&#21508;&#37117;&#36947;&#24220;&#30476;&#12398;&#20301;&#32622;
  x = c(15.9, 15.5, 16, 16, 15.7, 15.7, 16, 15, 15, 14.7, 14.7, 15,
        15, 13.7, 14, 14, 12.7, 13, 13, 11.7, 11.7, 12, 12, 11, 11,
        10, 10, 10, 9, 9, 8, 8, 7, 7, 7.5, 7.5, 6.5, 6.5, 6, 4.5, 4.5,
        4.5, 3.5, 3.5, 3.5, 2.5, 2),
  y = c(12.9, 10.5, 9.5, 8.5, 7.5, 6.5, 5.5, 9.5, 8.5, 7.5, 6.5, 5.5,
        4.5, 6.5, 5.5, 4.5, 6.5, 5.5, 4.5, 7.5, 6.5, 5.5, 4.5, 5.5,
        4.5, 6, 5, 4, 5.5, 4.5, 6, 5, 6, 5, 3.5, 2.5, 3.5, 2.5, 5.5, 5, 4,
        3, 5, 4, 3, 5, 2),
  #width&#12392;height&#12399;&#12479;&#12452;&#12523;&#12398;&#22823;&#12365;&#12373;
  width = c(2.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
            1, 1, 1, 1, 1, 1),
  height = c(2.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
             1, 1, 1, 1, 1, 1))

#&#20316;&#26989;&#12501;&#12457;&#12523;&#12480;&#12395;&#20445;&#23384;
write.csv(JpanMiniMap, file = "JpanMiniMap.csv", row.names = FALSE)

JpanMiniMapデータの利用例

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

library("tcltk")
#tidyverse&#12497;&#12483;&#12465;&#12540;&#12472;&#12364;&#12394;&#12369;&#12428;&#12400;&#12452;&#12531;&#12473;&#12488;&#12540;&#12523;
if(!require("tidyverse", quietly = TRUE)){
  install.packages("tidyverse");require("tidyverse")
}

#JpanMiniMap&#12434;&#35501;&#12415;&#36796;&#12416;
JpanMiniMap <- read.csv(paste0(as.character(tkgetOpenFile(title = "&#12501;&#12449;&#12452;&#12523;&#12434;&#36984;&#25246;",
                                                          filetypes = '{"&#12501;&#12449;&#12452;&#12523;" {".*"}}',
                                                          initialfile = c("*.*")))))

###&#27671;&#35937;&#24193;&#12424;&#12426;&#27671;&#28201;&#12487;&#12540;&#12479;&#12434;&#21462;&#24471;#####
#http://www.data.jma.go.jp/obd/stats/data/mdrr/docs/csv_dl_readme.html
MaxTemp <- read.csv("http://www.data.jma.go.jp/obd/stats/data/mdrr/tem_rct/alltable/mxtemsadext00_rct.csv",
                    header = T, fileEncoding = "cp932")

#&#12487;&#12540;&#12479;&#20445;&#31649;&#29992;&#22793;&#25968;
NewMaxTemp <- NULL
#&#20966;&#29702;
for(n in 1:47){
  #&#37117;&#36947;&#24220;&#30476;&#12434;&#25277;&#20986;
  GetPref <- JpanMiniMap[n, 1]
  GetPrefData <- MaxTemp[which(MaxTemp[, 2] %in% grep(GetPref, MaxTemp[, 2], value = TRUE)),]
  #&#26152;&#26085;&#12398;&#26368;&#39640;&#27671;&#28201;&#12434;&#38477;&#38918;&#12391;&#20006;&#12403;&#26367;&#12360;
  GetPrefData <- GetPrefData[order(GetPrefData[, 10], decreasing = TRUE),]
  #&#26152;&#26085;&#12398;&#26368;&#39640;&#27671;&#28201;&#12434;&#21462;&#24471;
  NewMaxTemp <- c(NewMaxTemp, GetPrefData[1, 10])
}

#&#22320;&#22259;&#12487;&#12540;&#12479;&#12395;&#26152;&#26085;&#12398;&#26368;&#39640;&#27671;&#28201;&#12434;&#32080;&#21512;
JpanMiniMap <- cbind(JpanMiniMap, NewMaxTemp)

#&#12503;&#12525;&#12483;&#12488;
ggplot(JpanMiniMap,
       aes(x = x, y = y, width = width, height = height)) +
  geom_tile(aes(fill = JpanMiniMap[, 6]),
            color = "grey", show.legend = TRUE) +
  geom_text(aes(label = JpanMiniMap[, 1]), size = 2.6) +
  coord_fixed(ratio = 1) +
  scale_fill_distiller(palette = "Spectral", name = "&#27671;&#28201;") +
  theme_void()

出力例

22.01.23に気象庁より取得した各都道府県の最高気温をプロットしています。


あなたの解析がとっても楽になりますように!!

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