都道府県別産業構成比チャートを追加 - オープンデータの活用
やったこと
セクション「やったこと」人口推計に続くオープンデータページとして、都道府県ごとの産業構成比(%)を積み上げ横棒チャートで表示できるようにしました。
→ 産業構成比ページ
チャートの内容
セクション「チャートの内容」- 縦軸: 47都道府県
- 横軸: 産業構成比(%、各都道府県の合計がほぼ100%になるよう正規化)
- 色分け: 農林漁業・製造業・宿泊業,飲食サービス業など17の産業大分類をそれぞれ固定色で表示
製造業の比率が高い地域、宿泊業・飲食サービス業の比率が高い地域など、都道府県ごとの産業構造の違いが一目でわかります。
opendata-astro の拡張
セクション「opendata-astro の拡張」今回の対応にあわせて kazweda/opendata-astro に 2 つの機能を追加しました(v0.1.12)。
stacked オプション
セクション「stacked オプション」OpenDataChart に stacked?: boolean を追加しました。Chart.js 自体はもともと積み上げグラフに対応しているため、x/y 両軸に stacked を渡すだけの小さな変更です。
<OpenDataChart client:only="react" dataSet={industryCompositionData} chartType="bar-horizontal" stacked={true}/>labelsKey オプション
セクション「labelsKey オプション」EStatFetcher はこれまで、e-Stat の time(時間軸)を常にチャートの labels に使う設計でした。今回使いたい経済センサスの統計表は time 軸の値が1つ(2021年)しかなく、「都道府県を labels、産業を系列」という構成をそのままでは作れませんでした。
そこで labelsKey?: string を追加し、time 以外の軸(例: area)を labels に使えるように一般化しました。あわせて prefectureOnly/municipalityOnly も、labels 軸・系列軸のうちどちらが area 軸であっても効くようにしています。
{ 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]), })), };})();