このサイトは神戸市・バルセロナ市連携プロジェクトWorld Data Viz Challenge 2016 に向けて制作を始めました。

これまで何度も国勢調査に回答したことはあるけれども、その結果がどうなったのかを真面目に見たことはありませんでした。 国勢調査の結果から導かれた個別のトピックについて、ニュースなどで時折目にする程度でしょうか。 例えばよくあるグラフはこんな感じです。神戸市の「平成27年12月1歳階級別人口」を使っていて、横軸が年齢(1歳刻みで0~100歳)、縦軸が人数です。

どうも統計というと「大きな話」しかなくて、自分自身との距離を感じるのです。 もちろん統計結果には回答した内容が組み込まれているし、自分自身が統計データの一部に入っているはずなのですが、 当事者意識は持ちにくいと感じていました。

今回データを見ているうちに、公開されているデータ自体にはもっと情報が入っていることに気が付きました。先ほどの1歳階級のデータは「○○丁目」レベルでデータがあります。神戸市に住んでいる人であれば、それはどのぐらいの大きさなのか、ピンとくると思います。ほとんどのケースで、自動車を使わなくてもぐるりと回れる大きさではないでしょうか。どうにか工夫して、個人レベル(自分)と市レベル(全体)の間をうまくつないで見せることもできそうです。

数値処理をして色をつけて地図上に表示したものが、「Kobe picker」です。色の付け方については後述しますが、おおざっぱには赤が高齢寄り、緑が子育て世代になります。青はその中間です。自分が住んでいる場所の付近を眺めてみたり、マンション群や団地を見て「あぁ、この辺はどんな人が住んでいるんだろう?」となったときに様子がわかります。バルセロナ市版は「Barcelona picker」です。バルセロナの赤は、神戸ほど強く高齢者に偏っていないことに注意して見てください。バルセロナのデータはオープンデータ(住民登録情報ベースのもの)を使っています。

また、過去分と合わせてアニメーション化したものが「Kobe animation」と「Barcelona animation」のエントリです。

数値処理

NMFを使っています。3ベクトルに分解していますが、着色はRGBの3次元だからという理由だけでそうしています。より大きくすると、二峰性(親子のペア)のベクトルが世代をずれていくつかでてくる感じです。ベクトルと色の対応は、ベクトルの平均年齢降順に赤、青、緑としています。

具体的な計算はプログラムを参照していただけると簡単かと思います。プログラムは主に python で前処理しています。SciPy stack 互換のディストリビューションを使うと簡単です。