俺のOneNote

俺のOneNote

データ分析が仕事な人のOneNote愛とか、分析小話とか。

Ternary plot をTableauで実現する

Ternary Plot、3次元プロット?をTableauで実装してみます。

en.wikipedia.org

Tearnary Plotは3次元の構成要素を正三角形内にプロットするVizです。

Tableau Public に Tearnary Plot のサンプルが多々 Publish されているので、
それを見ていただくとイメージがつかめます。
僕もこれらを参考に、以下設計していきます。

public.tableau.com

データ

e-statから市区町村の年齢3階級別人口を取得しました。

この3カテゴリの構成比データを2次元座標データに加工し、 Tableau上でTernary Plotとして描写するのが本記事のゴールです。

www.e-stat.go.jp

上記e-statでデータを加工し、以下のデータを取得します。

f:id:kopaprin:20200504233108p:plain

余計な情報はcsv上で処理し、Tableauへ渡します。

Tableau上での描写

Tableauに渡した段階のデータはこちらになります。

f:id:kopaprin:20200504234814p:plain

ここから、以下のとおり構成比のメジャーを作成します。

f:id:kopaprin:20200505124617p:plain

このデータをどう2次元座標データにするかという問題には、wikipediaに答えがあります。

en.wikipedia.org

以下計算式により、3次元のa,b,cデータをデカルト座標にプロットできます。*1

f:id:kopaprin:20200505125040p:plain

TableauでX, Yのメジャーを以下のとおり作成します。

/// X
(1/2) * 
(
(2*[B:15-64]+[C:65]) /
([A:-15]+[B:15-64]+[C:65])
)
///Y
(SQRT(3)/2) *
(
[C:65] /
([A:-15]+[B:15-64]+[C:65])
)

あとはX, Yのメジャーを行列に配置し、 詳細に市町村名を配置、適当に都道府県等のディメンションで色分け、pointの大きさを人口にしてみます。

X,Yの軸の範囲は0~1に固定しておきましょう。 また、レポートの背景色・罫線などの情報は削除しておきます。

f:id:kopaprin:20200505140436p:plain

別にダッシュボードを作成、 背景に上記wikipediaで公開されているTernary Plotの画像を適当に拝借しましょう。

commons.wikimedia.org

設置した背景の上に作成したレポートを浮動オブジェクトで合わせます。

f:id:kopaprin:20200505140923p:plain

これで完成、全国市区町村の年齢3階級別構成比を2次元のTernary Plotで表現できました。

f:id:kopaprin:20200505141110g:plain

Public Garrary上の動かせるデータはこちらです。

public.tableau.com

appendix

正直、市区町村年齢構成の大勢はそこまで変わりませんので、
DataViz作品としては微妙でしたね。

もう少し時系列データで遷移を見たりすると面白いかもしれません。

3次元かつ、それぞれの軸が百分率で表現できる指標にすると、こちらのVizで表現できます。
機会があったら他の例もつくってみたいと思います。

*1:線形代数がダメなので、表現間違ってたらすみません。勉強しておきます