![見出し画像](https://assets.st-note.com/production/uploads/images/132720900/rectangle_large_type_2_5d71f6d2d950cf6384d1b91661171697.png?width=1200)
PowerBIでワッフルチャート(Waffle Chart)を作る
ワッフルチャート Waffle Chartとは?
ワッフルチャートは、データの比率や分布を視覚的に表現するためのグラフです。通常、正方形のセルで構成され、セルの色や塗りつぶしの程度を変えることで、パターンを強調することができます。ワッフルチャートは、特に比率や割合を強調したい場合に便利で、目で簡単にデータの傾向やパターンを理解するのに役立ちます。
PowerBIでの作り方
今回はこのようなASEAN諸国の都市化率のダッシュボードを作成しながら、ワッフルチャートの作り方を解説します。
![](https://assets.st-note.com/img/1709396931797-BDM4Ng8hR4.png?width=1200)
1.使用するデータテーブルを作成する
ワッフルチャートを作るためには、
・ワッフルチャート作成用のデータテーブル
・表現に使用したいデータテーブル
の二つを使います。
まずは下記の方法で1つ目のワッフルデータテーブルを作成します。
ワッフルデータテーブル
①PowerQueryを開き、ホーム画面の「新しいソース」から、「空のクエリ」を作成し、「Waffle Data」と名付けます。
![](https://assets.st-note.com/img/1709397354362-m2VS83piUP.png)
②1から10までの数字のリストを作成します。fxバーで、下記のコードを入力し、右上の「拡張ボタン」を押して、リストにしてください。
={1..10}
![](https://assets.st-note.com/img/1709397619823-9YggZIFwvr.png)
![](https://assets.st-note.com/img/1709397463294-ekT2XQg1i8.png)
この列名を「Y軸」に変更します。
③次に、「X軸」という名前のカスタム列を作成し、1から10までの数字の別のリストを作成します。式に入れるコードは先ほどと同じです。
![](https://assets.st-note.com/img/1709397829696-5T0nyrxVjy.png?width=1200)
作成した「X軸」列を展開します。
Yの1つの値に対して、Xが1~10までつく100行のデータができました。
![](https://assets.st-note.com/img/1709398105543-qyTyvmpDTa.png)
④1から始まるインデックス列を追加します。
⑤「凡例」という名前のカスタム列を追加します。
次のコードで、「Shaded」と「Unshaded」という二値を入力します。
= {"Shaded", "Unshaded"}
![](https://assets.st-note.com/img/1709398214730-yBov9tDXOG.png?width=1200)
作成した「凡例」列を展開します。
⑥これで、このクエリに「Shaded」と「Unshaded」のそれぞれで「Y軸」、「X軸」、「インデックス」値が含まれる200行のデータが生成できました。
最後に、データ型を変えます。
インデックス、X軸、Y軸は整数、凡例はテキスト型にして、PowerBI Desktopに取り込みます。
表現に使用するデータを取り込む
今回は、下記のURLから,
Number of people living in urban and rural areas
というデータをダウンロードしました。
PowerQueryで取り込み、カラム名を修正してこちらもDesktopに読み込ませます。
![](https://assets.st-note.com/img/1709398632401-a5KCykZJ3Q.png?width=1200)
これで、使用するデータテーブルが2つとも取り込めました。
2.ワッフルチャート用のメジャーを作る
可視化で使う新しいメジャーを3つ作成します。
①まずは、都市化率(都市人口/国の人口全体)の計算式
urbanization% =
VAR _urban = SUM('urban pop'[Urban population])
VAR _rural = SUM('urban pop'[Rural population])
RETURN
DIVIDE(_urban, _urban+_rural)
②次にワッフルポイントを作ります。
これは、ワッフルチャートの中で、2色(塗る色と塗らない色)を制御するための計算式です。
ワッフルポイント=
VAR _MaxIndex = MAX('Waffle Data'[インデックス])
VAR _Comparator = ROUND([urbanization%]*100,0)
VAR _LegendValue = SELECTEDVALUE('Waffle Data'[Legend])
RETURN
SWITCH(
TRUE(),
_MaxIndex <= _Comparator && _LegendValue="Shaded", 1,
_MaxIndex > _Comparator && _LegendValue="Unshaded", 1,
0
)
簡単な式の中身の意味は次の通り。
VAR _MaxIndex = MAX('Waffle Data'[インデックス]): ワッフルデータテーブルから「インデックス」という列の最大値を取得して、_MaxIndexという変数に格納します。
VAR _Comparator = ROUND([urbanization%]*100,0): 「urbanization%」という列の値に100を掛けて、比較値として使用します。この値を整数に丸めて _Comparator という変数に格納します。
VAR _LegendValue = SELECTEDVALUE('Waffle Data'[Legend]): ワッフルデータテーブルから「凡例」という列の現在の選択値を取得して、 _LegendValue という変数に格納します。
SWITCH(): SWITCH関数を使用して、複数の条件に基づいて値を返します。条件がTRUEになる場合、指定された値を返します。
_MaxIndex <= _Comparator && _LegendValue="Shaded": _MaxIndexが _Comparator 以下であり、かつ _LegendValue が "Shaded" の場合、値1を返します。
_MaxIndex > _Comparator && _LegendValue="Unshaded": _MaxIndexが _Comparator より大きく、かつ _LegendValue が "Unshaded" の場合、値1を返します。
それ以外の場合は、0を返します。
③ワッフルチャートのタイトルを制御するための計算式
選択されている国名と都市化率がタイトルに表示されるように、次の式を作ります。
![](https://assets.st-note.com/img/1709400153994-EmHIao2wyG.png)
Waffle Title =
VAR _Category = SELECTEDVALUE( 'urban pop'[Country/Area] )
VAR _Value = [urbanization%]
RETURN _Category & "|" & FORMAT(_Value,"#0%")
3.ワッフルデータを視覚化する
ついに、視覚化に移っていきます。
方向性
:散布図を使い、画像のように設定した後、書式を調整します。
![](https://assets.st-note.com/img/1709400269893-ownF5KdGzZ.png)
キャンバスに散布図を追加
「インデックス」列を値のデータロールに追加
「X軸」列をX軸のデータロールに追加
同じ手順を、「Y軸」列とY軸のデータロールに追加
「凡例」列を凡例のデータロールに追加
「ワッフルポイント」メジャーをフィルタペインの「このビジュアルにフィルタを適用する」に追加。フィルタを「次である」に設定し、テキストボックスに「1」と入力し、フィルターを適応します。
![](https://assets.st-note.com/img/1709400361726-UORM7CGP7U.png)
書式設定
最後にビジュアルのプロパティを設定していきます。
レンジの最小値を0.5、最大値を10.5に設定
x軸、y軸のタイトルをオフ
x軸、y軸のその他の設定をオフ
凡例をオフ
マーカーを正方形に設定し、サイズを適切な値に調節
カラーは、「Shaded」は目立つ色、「Unshaded」は薄い灰色に設定
ビジュアルのタイトルを、条件付き書式設定を使用して、先ほど作った「Waffle Title」を設定
レポート完成
今回作成したダッシュボードでは、ASEAN諸国ごとのワッフルチャートを作成し、10年ごとに変化をみることができるスライサーをセットしました。
![](https://assets.st-note.com/img/1709402975245-RqWMBxBHy8.png?width=1200)
![](https://assets.st-note.com/img/1709402920248-Fxs3VYYhgb.png?width=1200)
インサイト:ASEAN諸国内の格差
1960-2020の間に、ASEAN全体では、19%から50%と大きく都市化が進行していることがわかります。
その中でも大きく分けると、急速に都市化が進行する、マレーシアやインドネシアなどに対して、フィリピン、ベトナム、ラオス、ミャンマー、カンボジアは比較的ゆっくりと都市化しており、2020年時点で50%を超えていません。
国家の都市化は、経済発展と分かちがたい関係性があるため、経済発展が急速に進む国と、紛争の勃発や政治不安定により経済に後れを取る国との、ASEAN内の経済格差が見て取れます。
おまけ
ミニTips ビジュアルの相互干渉を避ける
ワッフルチャートを選択すると、複数のビジュアル同士が干渉して、表示されない問題が発生します。
![](https://assets.st-note.com/img/1709401656237-DO2HjQHa5n.png?width=1200)
通常は、「相互作用を編集」でフィルターを掛けない処理をすることもできます。しかし今回は、ビジュアルの数が多くて設定が大変です。
そこで、透明な図形を上に重ねて、ビジュアルがクリックされないように工夫しました。
![](https://assets.st-note.com/img/1709401570137-w9ukvqgM8B.png?width=1200)
今回作成したダッシュボード
完成版はここから確認できます。
まとめ
表現の幅が広がるワッフルチャートをぜひ作ってみてください。