Skip to content

都道府県別人口変化率チャートを追加 - オープンデータの活用

This content is not available in your language yet.

既存の人口推計チャート(全国総人口の推移)に加えて、都道府県別の人口変化率(2015→2020年)をバーチャートで表示できるようにしました。

人口推計ページ

  • 横軸: 47都道府県
  • 縦軸: 人口変化率(%)
  • 色分け: 増加した都道府県は緑、減少した都道府県は赤

今回の対応にあわせて kazweda/opendata-astro に 3 つの機能を追加しました。

prefectureOnly オプション(v0.1.6)

セクション「prefectureOnly オプション(v0.1.6)」

EStatFetcherprefectureOnly?: boolean を追加しました。e-Stat API のレスポンスには全国・都道府県・市区町村が混在することがあるため、true を指定すると都道府県コード(\d{2}00000000 除く)だけに絞り込めます。

astro.config.mjs
{
id: 'population-by-prefecture',
fetcher: new EStatFetcher(),
params: {
statsDataId: '0004021102',
classFilters: { cdCat01: '000', cdCat02: '001' },
seriesKey: 'area',
prefectureOnly: true,
},
}

DataSet.seriescolors?: string[] を追加しました。バーごとに色を指定できます。OpenDataChart はこの配列を Chart.js の backgroundColor にそのまま渡します。

OpenDataChartshowLegend?: boolean(デフォルト true)を追加しました。per-bar カラーを使った単一系列チャートでは Chart.js の凡例が最初のバーの色しか表示しないため、false にして代わりにテキストで色の説明を添えています。

都道府県別の生データ(ラベル=年、系列=都道府県)を MDX 内で変換し、「ラベル=都道府県名、系列=変化率」に組み替えています。

export const prefectureChangeData = (() => {
const idx2015 = prefectureData.labels.findIndex((l) => l.startsWith('2015'));
const idx2020 = prefectureData.labels.findIndex((l) => l.startsWith('2020'));
return {
labels: prefectureData.series.map((s) => s.name),
series: [
{
name: '人口変化率(%)',
values: prefectureData.series.map((s) => {
const pop2015 = s.values[idx2015];
const pop2020 = s.values[idx2020];
return Math.round(((pop2020 - pop2015) / pop2015) * 1000) / 10;
}),
colors: prefectureData.series.map((s) =>
s.values[idx2020] >= s.values[idx2015]
? 'rgba(75, 192, 192, 0.8)'
: 'rgba(255, 99, 132, 0.8)'
),
},
],
};
})();