地図上に、ある年代の人口割合を色で表現したい！

# 今回の要件

tableau使用するメリットとして、地図表示のGUIが優秀だと思っております。
その国、都道府県、市区町村の合計人口などを表示したり、合計の売上を表示がとても簡単で、最初いじったときはBIツールすげえええと感動した覚えがあります。

![Untitled.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/51cf6838-25a9-ca4d-51c7-4be012d9a58f.png)

しかし、ある年代の構成比を表示したいとなるとクリック＆ドラッグアンドドロップだけではできなくなってしまいます。

それも、ふと **「各市町村において、ある年代の人口割合」の表示を色で表すには？** と思ったのがきっかけです。

今回は愛知県の人口データを使用してTableau上でビジュアライゼーションを行います。
計算式にすると
**ある市区町村のある年代の人口/ある市区町村の合計人口**
になります。

文字で書くとイメージしずらいので、例となる写真を下記添付しました（データをどうビジュアライズしたいかのプロンプト文書くのかなり難しい、今度このテーマでブログ書こう）。
![IMG_9534.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/156f3ae5-8a5f-4b24-fd86-ebae3ecaa379.png)
> 引用元：[あいちの人口　令和2年国勢調査 －人口等基本集計結果－　（2020年10月1日現在） - 愛知県 (pref.aichi.jp)](https://www.pref.aichi.jp/soshiki/toukei/kokucho2020.html#:~:text=%E3%83%BB%E4%BA%BA%E5%8F%A3%E3%82%92%E5%9C%B0%E5%9F%9F%E5%88%A5%E3%81%AB%E3%81%BF%E3%82%8B,9.9%EF%BC%85%EF%BC%89%E3%81%A8%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82)

この上、さらにパラメーターを使って年代の選択できて、動的に表示させたい。
これがまあ～～～頭を悩ませたので、今回ブログにしてみました。



# 簡易表計算では不可
最初は、マークにドロップしているメジャー「人口」の簡易表計算から「合計の割合」を選択すればなんとかなるかなと思っていましたが、甘かったです。

合計に対する割合を選択すると、計算式として
**ある市区町村の合計人口/愛知県全体の合計人口**
となってしまうのです。ってか当たり前か。
![Untitled (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/1ba6cc36-403b-482a-5d09-9971c3aece2c.png)
![Untitled (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/87ce3516-e09c-be17-8ded-721ee86aac3f.png)
分母を各市町村の合計人口にし、分子を各市町村の年代に揃える、これをどう表現すればいいかがわからず中身がない頭を1週間抱えました。

# IF文×パラメーターで解決する

DATA Saber界隈の方に聞いたところ、IF文とパラメーターを掛け合わせることで、要件満たせることがわかりました。下記画面キャプチャ付きで説明します。

**【大枠のながれ】**
**①ディメンション「年代」で　パラメーター作成**
**②パラメーター × if 文　で、パラメーターにて選択された年代の人口を抽出**
**③　②で出てきた数値/SUM(人口)**

では行きましょう。

## ①ディメンション「年代」で　パラメーター作成

まずはディメンション「年代」を元に、パラメーター「年代選択」を作成します。

「年代」は00代から90代、年齢不詳まで存在します。

![Untitled (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/8cc8f876-6698-215f-0d57-b9c7fd686223.png)

## ②パラメーター × if 文　で、パラメーターにて選択された年代の人口を抽出
次に、計算フィールドを作成し、IF文を用いてパラメーターで選択された年代の人口を抽出します。IF文の知識がないと、この要件は満たせれなかったです。

IF文の書き方ですが↓

**IF　[条件式]**
**THEN　[条件式に合うメジャー/ディメンションを抽出]**
**ELSE　[条件式に合わないメジャー/ディメンションを抽出]**
**END**

が書き方になります。

条件式では、パラメーターと一致する年代を抽出したいので、
**[年代]＝[年代選択]**
と作成することで、パラメーターにて選択された年代が抽出されるようになります。

![Untitled (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/46460a1c-5244-9a5a-eb12-375b1e536f43.png)
## ③　②で出てきた数値/SUM(人口)
最後に、計算フィールドを作成し、手順②で抽出された数値をSUM（人口）で割ってあげることによって、ある年代の人口割合を割り出せるようになります。

この計算フィールドを、マークの色にドロップダウンすると、割合の度合いで色が変わります。
![Untitled (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/750a3355-3620-c668-6375-715d7bd49141.png)
![Untitled (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/eb918747-ad5d-c647-2c03-ab51aa3a7f1c.png)
![Untitled (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/7c7c8f97-47fa-830c-6d8f-ed4137890dff.png)
# 留意すべき点

要件うまく満たすことができた！と思ったのですが、修正すべき点がありました。

**各年代の構成比の彩度が統一されていないのです。** 例として、20代と70代の構成比をみてみましょう。

![Untitled (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/df32088e-0cb3-d98d-eb66-0bf163029ce8.png)
![Untitled (9).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/a52a4207-02f7-c0e8-3e2e-7a0eb1d77a6e.png)


それぞれの年代の、最小値と最大値が同じ彩度が割り当てられてしまっています。

ユーザー目線からすると、「20代の最大構成比と、70代の最大構成比は、同じ値なのかな」と勘違いしてしまう可能性があります。

もし要件が、「各市町村において、ある年代の人口割合を、ランキング形式で表示したい」ということであれば満たせるかもしれませんが、今回はそうではありません。

ということで、彩度が固定されるように設定します。が、ここで考慮すべきはどの数値をMAXとすべきかです。仮に 0~100%で表記させたいとします。

マーク　＞　色　＞　色の編集　＞　開始値、終了値を設定　＞　適用　します。

![Untitled (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/dd885ae1-1428-f63d-a72f-9e367eb301f3.png)


すると、色がとっても薄くなってしまい、市区町村での優位差がわからなくなってしまいます。

20代を選んだとき↓
![Untitled (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/5bd13ca8-2a2e-0ba8-7153-5912afc443db.png)
30代を選んだとき↓
![Untitled (12).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/b31840fd-4502-e288-9e31-e5429c1c1957.png)

つまり、色の編集において、開始値と終了値を何にするかが議論の点となります。ここは一度Viewerから要件についてさらに伺ってみてもいいかなと思いますが、今回は一度こちらで終了値を設定してViewerに提示するとき「終了値をこっちで勝手に決めたんだけど、修正したほうがいいか？」とたたき台元に聞けるように作成してみます。

ここでは、市区町村の人口割合を概観すると、最大構成比が19%あたりなので、終了値を20%に設定します。

![Untitled (13).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/59e6501e-f7c1-ca20-b1d5-40c97c7e8b48.png)

すると、地区町村間での有意差も確認できるくらいに分かりやすくなり、年代別の構成比も確認できつつ、どの市区町村にどの年代の方が集中しているかのインサイトも得れるようになりました。

![Untitled (14).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/67d82085-e53e-a6f5-dc23-eb395bbcfd33.png)
![Untitled (15).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/83f35e56-543d-e9b9-c3bd-b8c907e88aab.png)
![Untitled (16).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3489181/a32df64c-d1b6-7c3e-53e8-23356b1d0748.png)

作成完了したVIZが下記リンクになります。

https://public.tableau.com/app/profile/.65338630/viz/_16878386640530/sheet0?publish=yes

# まとめ
グラフ上で構成比、割合など表示するときは、簡易表計算を使えば満たせるケースが多いかと思いますが、地図上に割合を表示するとなると、IF文など作成する必要があります。ここの理解が今回の要件満たすうえで一番の障害だったと思います。

IF文、使いこなせれるようになれば、Tableau上で表記できる幅がぐんと上がるはずです。

以上、誰かのご参考になれば幸いです。

使用したデータは
truestar社　PrepperOpenDataBank JAPANESE CENSUS & SPATIAL DATA /  町丁目 年齢階級別男女別人口データ、町丁目 基礎データ、市区町村基礎データ
からになります。ご参考までに。

https://truestar.co.jp/prepper/jcsd/prepper_data_city01/