データの可視化というのは説得力が増すばかりでなく、新しい発見にも繋がりますよね。
Unityはゲームエンジンですが、実はツールとしての特性は「可視化にめっぽう強い」と言えます。
今回は、時系列のデータを拾ってきて可視化してみます。
githubにプロジェクトを置きました。
https://github.com/dsedb/VisualizationWorkshopTutorial
単純なプロジェクトですので、これからUnityを試す方には参考になると思います。
時系列のデータとは
ある時期において、Aがいくつ、Bがいくつ、と固有名に数値がついているようなものを指すことにします。
例えば
・歴代時価総額ランキング
・中世における国別の人口推移
・Twitterにおける週刊トレンド推移
などなど。まあ、いくらでもありますわな。
表示方法
2Dで可視化
Unityだしカッコよく3Dで、という気持ちにもなりますが、人間の知覚の限界から言っても、可視化の真骨頂は2Dだと思うんですよね。3Dにしたところでモニタは2Dなので、後ろ側の物体が遮蔽されて見えないとか、重なってわかりにくいとか、カメラを回す操作を入れて対応だとか、どこかしら無理があるので。
円
数値を面積にした円を描画し、それぞれの中心に固有名文字列を出しときましょう。
こんな感じ。
実装
物理挙動をあてがった円の面積を変えます。大きくなっても質量を変えなければ、物理的には風船が膨らむような、どこか「軽い」感じになるでしょう。その他、実装の特徴は以下です。
- データはCSV
- 時系列ごとにCSVファイルを分離
- 視認性のため円の色をランダムに
- 動作はRigidbody2Dで物理挙動に
- 中心に引力を働かせる
具体例:男の子の命名トレンド(北米)
北米の社会保障局のサイトに、各年代の赤ちゃんの名前ランキングがありました。
https://www.ssa.gov/oact/babynames/index.html
このデータを可視化してみましょう。
結果
こうなります。
Unityで北米の男の子の名前の変遷の可視化にチャレンジ。"Get Ready For Baby". Retrieved 14:00(JST), January 11, 2019, from https://t.co/3c2kgBXIFU pic.twitter.com/QcsxrPOK5Q
— ヤスハラユウジ (@dsedb) 2019年3月8日
おもしろい。現代ではツブが小さくなるので、名前の偏りが減っていることが伺えます。傾向としては日本も同じですよね。
具体例:企業時価総額
次は、企業の時価総額のデータを見てみます。GAFAの戦いってやつを拝んでやろうじゃないですか。
結果
こうなりました。神々の戦いって感じしますなあ。
Unityで企業時価総額の可視化。
— ヤスハラユウジ (@dsedb) 2019年3月8日
"List of public corporations by market capitalization"
Wikipedia contributors. (2019, March 2). List of public corporations by market capitalization. In Wikipedia, The Free Encyclopedia. Retrieved 12:39, March 4, 2019, from https://t.co/1rJ7sXBcQZ pic.twitter.com/dYrQ7fql9r
まとめ
お手軽な可視化ですが、こうして初めて気がつく点もありますよね。同じトップ10でも、1位がぶっちぎりなのか、どんぐりの背比べなのかで実際の事情はかなり違いますし、それが時系列で比較できるのは面白い。
こういうUnityの使い方は、きっと文系方面の研究でも有効ですよね。めでたしめでたし。