1 国土交通省「国土数値情報 行政区域データ」

  • 国土交通省国土政策局のダウンロードサイトから入手可能。
  • 世界測地系(JGD2011 )のデータがある。
  • シェープファイル形式(.shp)他でデータを無料で提供。
    • 国土地理院の数値地図は、Windosのみ対応の変換ソフトでXML形式からシェープファイル形式に変換が必要で、手間がかかる。
    • それに比べて、国土交通省「国土数値情報」は最初からシェープファイル形式のデータがダウンロードできるので、手間が省ける。

2 石川県の市町村地図

library(sf)
ishikawa <- read_sf("N03-20240101_17_GML/N03-20240101_17.shp")

3 変数名の変更

属性 コード
都道府県名 (N03_001)
北海道の振興局名 (N03_002)
郡名 (N03_003)
市区町村名 (N03_004)
政令指定都市の行政区域名 (N03_005)
全国地方公共団体コード (N03_007)
## N03_001 to pref
names(ishikawa)[names(ishikawa) == "N03_001"] <- "pref"
## N03_002 to hokkaido
names(ishikawa)[names(ishikawa) == "N03_002"] <- "shinko"
## N03_003 to gun
names(ishikawa)[names(ishikawa) == "N03_003"] <- "gun"
## N03_004 to city
names(ishikawa)[names(ishikawa) == "N03_004"] <- "city"
## N03_005 to ku
names(ishikawa)[names(ishikawa) == "N03_005"] <- "ku"
## N03_007 to code
names(ishikawa)[names(ishikawa) == "N03_007"] <- "code"

3.1 郡と市町村を合体した変数を作成

# 郡と市町村を合体した変数を作成
ishikawa$guncity <- paste(ishikawa$gun, ishikawa$city, sep = "")
# 群がNAの場合は市町村名のみを使う
ishikawa$guncity[is.na(ishikawa$gun)] <- ishikawa$city[is.na(ishikawa$gun)]

4 石川県の市町村地図のプロット

plot(ishikawa)
TRUE

TRUE

5 石川県の市町村名とコードの取得

# cityとcodeの抽出
city <- list(city = ishikawa$city, code = ishikawa$code)
# データフレームに変換
city <- data.frame(city)
# 重複の確認
duplicates <- duplicated(city[, c("city", "code")])
# 重複の削除
city <- city[!duplicates, ]
# データの確認
city

6 石川県の市町村地図から島を除く

# cityのrow nameを取得
city_row <- rownames(city)

# ishikawaのうちcityのrow numberのみを残す。
ishikawa_simple <- ishikawa[city_row, ]

7 震度データ(ishikawa_data)の接続

# 震度データの読み込み
library(readxl)
ishikawa_data <- read_excel("ishikawa_data.xlsx")
ishikawa_data$city <- NULL
# shindoがNAの場合は、NAを"記録なし"に変換
#ishikawa_data$shindo[is.na(ishikawa_data$shindo)] <- "記録なし"

# ishikawa_simpleにishikawa_dataを接続
ishikawa_simple <- merge(ishikawa_simple, ishikawa_data, by = "code")

8 石川県の市町村のプロット (1)

# 石川県の市町村をggplot2でプロットする。
library(ggplot2)
ggplot(ishikawa_simple) + # ishikawa_simpleを使ってプロット
  geom_sf(aes(fill = city), color = "white") + # 塗りつぶしの色をcityに設定
  scale_fill_viridis_d() + # 塗りつぶしの色をviridisパレットに設定
  theme_minimal() + # テーマをminimalに設定
  theme(legend.position = "bottom") + # 凡例を下部に表示
  labs(title = "石川県の市町村地図", # タイトルを設定
       fill = "市町村名") # 凡例のタイトルを設定
TRUE

TRUE

9 石川県の市町村のプロット (2)

  • 志賀町と七尾市のラベルが被ってしまう。
  • geom_sf_text() 関数の position 引数には、テキストを配置する方法を指定するオプションがある。
    • “identity”: データの座標をそのまま使用してテキストを配置。
    • “stack”: テキストを重ねて配置。vjust や hjust を使用して調整可能。
    • “dodge”: テキストをデータポイントの近くに配置するが、重ならないようにオフセット。
    • “jitter”: データポイントをわずかにずらしてテキストを配置。
# 石川県の市町村をggplot2でプロットする。
library(ggplot2)
ggplot(ishikawa_simple) + # ishikawa_simpleを使ってプロット
  geom_sf(aes(fill = pref), color = "white") + # 塗りつぶしの色わけをprefに設定
  geom_sf_text(data = ishikawa_simple, 
               aes(label = city), size = 2, color = "black",
               position = "dodge") + # ラベルをcityに設定
  theme_minimal() + # テーマをminimalに設定
  labs(title = "石川県の市町村地図") + # タイトルを設定
  theme(axis.title.x = element_blank()) + # x軸のタイトルを非表示
  theme(axis.title.y = element_blank()) + # y軸のタイトルを非表示
  theme(axis.text.x = element_blank()) + # x軸の目盛りを非表示
  theme(axis.text.y = element_blank())  # y軸の目盛りを非表示
TRUE

TRUE

10 石川県の市町村のプロット (3) 震度

# 石川県の市町村をggplot2でプロットする。

library(ggplot2)
ggplot(ishikawa_simple) + # ishikawa_simpleを使ってプロット
  geom_sf(aes(fill = shindo), color = "white") + 
  scale_fill_viridis_d(option = "D") + 
    geom_sf_text(data = ishikawa_simple, 
               aes(label = city), size = 2, color = "white",
               position = "dodge") + # ラベルをcityに設定
  theme_gray() + # テーマをminimalに設定
  theme(legend.position = "bottom") + # 凡例を下部に表示
  labs(title = "石川県の市町村地図", # タイトルを設定
       fill = "市町村名") # 凡例のタイトルを設定
TRUE

TRUE

11 石川県の市町村のプロット (4) 震度

  • shindo2で色分けする
# 石川県の市町村をggplot2でプロットする。
# shindo2 = 0の場合、NAに変換
ishikawa_simple$shindo2[ishikawa_simple$shindo2 == 0] <- NA

# shindo2で主題図を作成
# 色の指定のため
library(RColorBrewer)
library(ggplot2)
ggplot(ishikawa_simple, aes(fill = shindo2)) + 
  geom_sf() + 
  scale_fill_gradientn(colors=brewer.pal(9,"GnBu"), 
                       na.value = "white")+
  theme_gray (base_family = "HiraKakuPro-W3")+
  labs(fill = "震度")+
  ggtitle("能登半島沖地震の震度")
TRUE

TRUE