市町村別高齢者割合マップ

society
高齢化
市町村別の65歳以上人口の割合をヒートマップで示したグラフです。スクリプトも公開しています。完全フリーです。
公開

2025年8月27日

更新日

2025年9月2日

都道府県別市町村ごとの65歳以上人口割合
ページ最下部に生成スクリプトを記載しています。

作成日 2025-09-02
データ取得日 2025-027
データ元 令和二年国勢調査|人口基本集計
使用したパッケージ R, ggplot2

北海道・東北

関東

北陸

中部

近畿

中国

四国

九州・沖縄

ソースコード

library(sf)
library(dplyr)
library(tidyverse)
library(stringr)
library(readxl)


data_file <- file.path('../data', 'major_results_2020.xlsx')
data <- read_excel(data_file)

geodata_file <- file.path('../data','N03-20250101.geojson')
geodata <- st_read(geodata_file) %>%
    rename('shityouson' = 'N03_004', '市町村コード' = 'N03_007')

prefdata_file <- file.path('../data', 'pref_lat_lon.csv')
prefdata <- read.csv(prefdata_file) %>% rename('都道府県名'='pref_name')

pref_list <- c('北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県', '茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県', '山梨県', '長野県', '新潟県', '富山県', '石川県', '福井県', '岐阜県', '静岡県', '愛知県', '三重県', '滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県', '鳥取県', '島根県', '岡山県', '広島県', '山口県', '徳島県', '香川県', '愛媛県', '高知県', '福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県')


merge_data <- merge(geodata, data, by='市町村コード', all.geodata=TRUE)

get_png <- function(filename) {
  grid::rasterGrob(png::readPNG(filename), interpolate = TRUE)
}

l <- get_png('./logoandurl.png')
t <- grid::roundrectGrob()


for (pref_name in pref_list) {
    print(pref_name)
    merge_data2 <- dplyr::filter(merge_data, 都道府県名==pref_name)
    title <- sprintf('市町村別高齢者人口割合 (%s, 2020年)', pref_name)

    koureikamap <- ggplot(merge_data2) +
        geom_sf(aes(fill = 人口65歳以上割合),linewidth=0.1, color='#303030') +

        scale_fill_gradient2(low='blue', mid='yellow', high='red', name='(%)', midpoint=40, limits=c(15,65)) +
        ggtitle(title) +
        theme(
              ## テキストの設定
              plot.title = element_text(family = "sans", size = 10, color="black", hjust = 0.5, face="bold"),
              axis.text.x = element_blank(),
              axis.title.x = element_blank(),
              axis.title.y = element_blank(),
              axis.text.y = element_blank(),
              axis.ticks.x = element_blank(),
              axis.ticks.y = element_blank(),
              legend.key.height=unit(0.5,'cm'),
              legend.key.width= unit(0.1, 'cm'),
              legend.title = element_text(family="sans",size=7,color="black",face="bold"),
              legend.text = element_text(family="sans",size=7,color="black",face="bold"),
              legend.ticks = element_blank(),
              panel.grid.major = element_blank(),
              panel.grid.minor = element_blank(),
              plot.margin = unit(c(0.5, 0.5, 1.5, 0.5), "lines"),
              panel.background = element_rect(fill = "#f0f7ff",color = NA)
        )

        if (pref_name=='東京都') {
            koureikamap <- koureikamap +
                scale_x_continuous(limits=c(138.9, 140), expand=c(0,0), breaks=c(seq(120,150,5))) +
                scale_y_continuous(limits=c(35.4, 36), expand=c(0,0), breaks=c(seq(30,50,5)))
        }

    ggsave(file = sprintf("./png/koureika_%s.png",pref_name), plot=koureikamap, dpi = 150, width = 3.5, height = 3.5)
}
トップに戻る