Domoで人口ピラミッドのグラフを作成する。

# はじめに
Domoを使い始めて、いろいろグラフを慣れていこうって考えているんですが、良いアイデアがないので、オープンデータを使って、いろいろなグラフを作ってみようと思う。

# 対象者
Domoのグラフを作成しているが苦労している方

# 作りたいグラフ
よくある人口ピラミッドを作りたい。

# Domoでグラフタイプを探す。
そもそも人口ピラミッドを作成したいが、そんなタイプがあるか調べてみた。

やっぱりない！

そんなときはググります！
ありました！アタラさんのページにありました！

https://bi.atara.co.jp/knowledge/domo_graph_20221223

使用するグラフタイプは、
「横棒グラフ」>「オーバーレイ棒グラフ」で、作れそうでした。
![スクリーンショット 2024-07-10 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/606e1ef8-aa14-4dad-7b5e-715a36e136d9.png)

# 人口分布のデータを探す。
次はデータです。都合よく、人口分布のデータないかな。。。。

そんなときも、ググります！
ありました！

最近はやりのオープンデータがありました。

https://www.city.osaka.lg.jp/contents/wdu290/opendata/

しかも作りたいゴールイメージまでありました。今回はこのデータでグラフを作りたいと思います。
（ちなみにこの画面キャプチャはTableauです。）
![スクリーンショット 2024-07-10 22.45.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/e1d25412-da45-f37f-0fa5-7e4f52b0286f.png)

## 年齢別推計人口【各歳別】を使う
更に探すと都合の良さそうなデータがあったのでダウンロードします。
https://www.city.osaka.lg.jp/contents/wdu290/opendata/#cat-51_data-00000642

ただちょうどよいデータではなかったので、Magic ETLでデータ加工をしていく必要がありました。
![スクリーンショット 2024-07-10 22.48.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/126dcdea-2f8d-89b3-65e5-d5b60faca100.png)

# データをアップロードする。
まずはダウンロードした年齢別推計人口【各歳別】のCSVデータをアップロードします。
詳細なやり方は省略しますが、Dataset名を「M_年齢別推計人口_PROD_Higashi」としました。
![スクリーンショット 2024-07-10 22.54.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/148735be-e3cb-d92d-b92e-16b98b43f0c0.png)

# たくさんある年齢の列をアンピボットする。
Magic ETLの詳細な作り方は書きませんが、順番に説明をしていきます。

まずは年齢のデータを扱いやすいようにアンピボットを行います。

## アンピボットの設定
「ピボット」>「アンピボット」を使って、データを整形しましょう。
アンピボットは下記の通りです。
①新たにディメンションとなる【年齢】という列を作ります。
②年齢ごとに人数格納したいので、【人数】という列を追加します。
③【０歳[人]】などの列を、新しい【年齢】列に入れていきます。
④その際に、”０歳[人]”という値にします。

![スクリーンショット 2024-07-10 22.57.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/52419c5b-fb6c-ca6c-20c7-6980f4bda6dc.png)

できたら、プレビューを押して確認しましょう。
【年齢】列に、もともと【1０歳[人]】という列だった情報が格納され、人数のところに【1０歳[人]】に入っていた値が入りました。
![スクリーンショット 2024-07-10 23.06.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/e9ab5562-3d76-97ce-da26-7e886e2d24eb.png)

## 列を選択
アンピボットしただけでは、もともとあった列はなくなりません。
「ユーティリティー」>「列を選択」を使い、必要な列だけ残しましょう。
こんな感じです。
![スクリーンショット 2024-07-10 23.10.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/e1c69b44-d501-b345-219c-75580174b211.png)

# ピボットを使って、男女の数値は別の列で持たせる。
アタラさんのHPを見ていると男女の数値は別の列で持たせないと行けないらしい。
ちなみに男女という情報は【男女計】列に「男性」「女性」「計」という情報でデータを持っていましたので、今度はピボットを行います。
![スクリーンショット 2024-07-10 23.24.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/7a80ac2e-bb7d-bdca-f0f7-582d22df3289.png)

## ピボットの設定
「ピボット」>「ピボット」を使って、データを整形しましょう。
アンピボットは下記の通りです。
①【男女計】という列の値から新しい列を作ります。
②行を特定するための列を指定します。
③【男女系】に入っている値が「男性」のときに、
④【男性】という列を新たに作り、
④【人数】という列の値を入れます。

![スクリーンショット 2024-07-10 23.28.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/ebbcb47b-27a7-2a24-9ab9-c53e7543dc74.png)

するとこんなデータになります。
![スクリーンショット 2024-07-10 23.33.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/24a61f06-7bc5-5b95-82d7-4a487b3d1726.png)

# 人口ピラミッドの作成。
出来上がったDatasetで、Analyzerを開きます。

使用するグラフタイプは、
「横棒グラフ」>「オーバーレイ棒グラフ」です。
![スクリーンショット 2024-07-10 22.43.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/606e1ef8-aa14-4dad-7b5e-715a36e136d9.png)

早速、Y軸（縦軸）に【年齢】、X軸に【男性】の合計、【女性】の合計をセットします。
![スクリーンショット 2024-07-10 23.35.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/3b3ecc6f-7055-0a04-1814-bc078fa27283.png)

なにか違う。。。。。。

アタラさんのHPを見てみると、左右にデータを出し分けるためには、数値をマイナスにして、疑似的に左側に棒グラフを表示することらしい。

## ビーストモードで、値をマイナスにする。
左側を男性の値にしていきたいので、男性の数値をマイナスする項目をビーストモードで作ります。
単純に、-1をかけただけです。名前は、「男性（-1）」としました。

![スクリーンショット 2024-07-10 23.40.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/ceacd4ea-1ce3-76ec-992d-de075aa0abe9.png)

## マイナスの値を、X軸に設定
X軸を、「男性（-1）」に置き換えたら、できた。。。。と思ったら、下にスクロールすると、何かおかしい。
そうです。年齢の文字が全角になっていて順番が違うのです。
![スクリーンショット 2024-07-10 23.42.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/9e2c1e8d-564e-7845-95d2-c90b64dda3a7.png)

こんなときはETLで元データを直しても良いのですが、今回はビーストモードでソート項目を作成します。

## ソートのための項目を作る。
強制的にソート順を決めるためのビーストモードで作ります。
名前は、「Sort年齢」とします。

![スクリーンショット 2024-07-10 23.49.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/d792b488-4e55-665b-52ab-3f5828668413.png)

## ソートを設定
「フィルターとソート」を表示し、ソートのところに先程作った「Sort年齢」を設定します。
デフォルトでは集計のところが「合計」になっているので、「集計なし」に設定変更する必要があります。

![スクリーンショット 2024-07-10 23.51.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/c36341d9-4597-0426-af5d-9c7da30ea7bd.png)

# 完成した人口ピラミッドのグラフ
やっと完成しました。

![スクリーンショット 2024-07-10 23.54.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3798145/21d59c76-2d0a-bb71-ea2d-4cde73d97204.png)