見出し画像

PowerBIでワッフルチャート(Waffle Chart)を作る

ワッフルチャート Waffle Chartとは?

ワッフルチャートは、データの比率や分布を視覚的に表現するためのグラフです。通常、正方形のセルで構成され、セルの色や塗りつぶしの程度を変えることで、パターンを強調することができます。ワッフルチャートは、特に比率や割合を強調したい場合に便利で、目で簡単にデータの傾向やパターンを理解するのに役立ちます。


PowerBIでの作り方

今回はこのようなASEAN諸国の都市化率のダッシュボードを作成しながら、ワッフルチャートの作り方を解説します。

ワッフルチャートを使ったASEAN諸国の都市化率%表現

1.使用するデータテーブルを作成する

ワッフルチャートを作るためには、
・ワッフルチャート作成用のデータテーブル
・表現に使用したいデータテーブル

の二つを使います。

まずは下記の方法で1つ目のワッフルデータテーブルを作成します。

ワッフルデータテーブル

①PowerQueryを開き、ホーム画面の「新しいソース」から、「空のクエリ」を作成し、「Waffle Data」と名付けます。

②1から10までの数字のリストを作成します。fxバーで、下記のコードを入力し、右上の「拡張ボタン」を押して、リストにしてください。

={1..10}
拡張ボタンの場所
拡張され、リストになる。

この列名を「Y軸」に変更します。

③次に、「X軸」という名前のカスタム列を作成し、1から10までの数字の別のリストを作成します。式に入れるコードは先ほどと同じです。

作成した「X軸」列を展開します。
Yの1つの値に対して、Xが1~10までつく100行のデータができました。


④1から始まるインデックス列を追加します。

⑤「凡例」という名前のカスタム列を追加します。
次のコードで、「Shaded」と「Unshaded」という二値を入力します。

= {"Shaded", "Unshaded"}

作成した「凡例」列を展開します。

⑥これで、このクエリに「Shaded」と「Unshaded」のそれぞれで「Y軸」、「X軸」、「インデックス」値が含まれる200行のデータが生成できました。
最後に、データ型を変えます。
インデックス、X軸、Y軸は整数、凡例はテキスト型にして、PowerBI Desktopに取り込みます。

表現に使用するデータを取り込む

今回は、下記のURLから,
Number of people living in urban and rural areas
というデータをダウンロードしました。

PowerQueryで取り込み、カラム名を修正してこちらもDesktopに読み込ませます。

これで、使用するデータテーブルが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を返します。

③ワッフルチャートのタイトルを制御するための計算式
選択されている国名と都市化率がタイトルに表示されるように、次の式を作ります。

Waffle Title = 
    VAR _Category = SELECTEDVALUE( 'urban pop'[Country/Area] )
    VAR _Value = [urbanization%]
    RETURN _Category & "|" & FORMAT(_Value,"#0%")

3.ワッフルデータを視覚化する

ついに、視覚化に移っていきます。

方向性

:散布図を使い、画像のように設定した後、書式を調整します。

  1. キャンバスに散布図を追加

  2. 「インデックス」列を値のデータロールに追加

  3. 「X軸」列をX軸のデータロールに追加

  4. 同じ手順を、「Y軸」列とY軸のデータロールに追加

  5. 「凡例」列を凡例のデータロールに追加

  6. 「ワッフルポイント」メジャーをフィルタペインの「このビジュアルにフィルタを適用する」に追加。フィルタを「次である」に設定し、テキストボックスに「1」と入力し、フィルターを適応します。

書式設定

最後にビジュアルのプロパティを設定していきます。

  • レンジの最小値を0.5、最大値を10.5に設定

  • x軸、y軸のタイトルをオフ

  • x軸、y軸のその他の設定をオフ

  • 凡例をオフ

  • マーカーを正方形に設定し、サイズを適切な値に調節

  • カラーは、「Shaded」は目立つ色、「Unshaded」は薄い灰色に設定

  • ビジュアルのタイトルを、条件付き書式設定を使用して、先ほど作った「Waffle Title」を設定

レポート完成

今回作成したダッシュボードでは、ASEAN諸国ごとのワッフルチャートを作成し、10年ごとに変化をみることができるスライサーをセットしました。

1960年の各国の都市化率%
2020年の各国の都市化率%

インサイト:ASEAN諸国内の格差

1960-2020の間に、ASEAN全体では、19%から50%と大きく都市化が進行していることがわかります。
その中でも大きく分けると、急速に都市化が進行する、マレーシアやインドネシアなどに対して、フィリピン、ベトナム、ラオス、ミャンマー、カンボジアは比較的ゆっくりと都市化しており、2020年時点で50%を超えていません。
国家の都市化は、経済発展と分かちがたい関係性があるため、経済発展が急速に進む国と、紛争の勃発や政治不安定により経済に後れを取る国との、ASEAN内の経済格差が見て取れます。


おまけ

ミニTips ビジュアルの相互干渉を避ける

ワッフルチャートを選択すると、複数のビジュアル同士が干渉して、表示されない問題が発生します。

他のグラフが消えてしまう

通常は、「相互作用を編集」でフィルターを掛けない処理をすることもできます。しかし今回は、ビジュアルの数が多くて設定が大変です。
そこで、透明な図形を上に重ねて、ビジュアルがクリックされないように工夫しました。

上から透明な四角を重ねる

今回作成したダッシュボード

完成版はここから確認できます。


まとめ

表現の幅が広がるワッフルチャートをぜひ作ってみてください。


この記事が気に入ったらサポートをしてみませんか?