Skip to content

都道府県別産業構成比チャートを追加 - オープンデータの活用

This content is not available in your language yet.

人口推計に続くオープンデータページとして、都道府県ごとの産業構成比(%)を積み上げ横棒チャートで表示できるようにしました。

産業構成比ページ

  • 縦軸: 47都道府県
  • 横軸: 産業構成比(%、各都道府県の合計がほぼ100%になるよう正規化)
  • 色分け: 農林漁業・製造業・宿泊業,飲食サービス業など17の産業大分類をそれぞれ固定色で表示

製造業の比率が高い地域、宿泊業・飲食サービス業の比率が高い地域など、都道府県ごとの産業構造の違いが一目でわかります。

今回の対応にあわせて kazweda/opendata-astro に 2 つの機能を追加しました(v0.1.12)。

OpenDataChartstacked?: boolean を追加しました。Chart.js 自体はもともと積み上げグラフに対応しているため、x/y 両軸に stacked を渡すだけの小さな変更です。

<OpenDataChart
client:only="react"
dataSet={industryCompositionData}
chartType="bar-horizontal"
stacked={true}
/>

EStatFetcher はこれまで、e-Stat の time(時間軸)を常にチャートの labels に使う設計でした。今回使いたい経済センサスの統計表は time 軸の値が1つ(2021年)しかなく、「都道府県を labels、産業を系列」という構成をそのままでは作れませんでした。

そこで labelsKey?: string を追加し、time 以外の軸(例: area)を labels に使えるように一般化しました。あわせて prefectureOnly/municipalityOnly も、labels 軸・系列軸のうちどちらが area 軸であっても効くようにしています。

astro.config.mjs
{
id: 'industry-by-prefecture',
fetcher: new EStatFetcher(),
params: {
statsDataId: '0003449701',
classFilters: { cdTab: '221-2021', cdCat02: '0', cdCat03: '0' },
labelsKey: 'area',
seriesKey: 'cat01',
prefectureOnly: true,
},
}

総務省「経済センサス-活動調査」(令和3年、e-Stat 統計表 ID: 0003449701)の常用雇用者数を使っています。取得した19分類のうち、集計値(全産業・非農林漁業合計)を除いた17分類(農林漁業+製造業などC〜Rの産業大分類)を、都道府県ごとの全産業合計に対する割合に変換してチャートに渡しています。

export const industryCompositionData = (() => {
const totals = industryData.series[0].values; // 全産業(S_公務を除く)
const industries = industryData.series
.slice(1)
.filter((s) => s.name !== '非農林漁業(S_公務を除く)');
return {
labels: industryData.labels,
series: industries.map((s, i) => ({
name: s.name,
values: s.values.map((v, j) => Math.round((v / totals[j]) * 1000) / 10),
colors: s.values.map(() => INDUSTRY_COLORS[i % INDUSTRY_COLORS.length]),
})),
};
})();