単一ドーナツチャートの作り方

単一ドーナツチャートの作り方

今回は、単一ドーナツチャートの作り方について紹介していきます。

以前にも、ドーナツチャートの作り方については取り扱いました。その際は、2つの円グラフを組み合わせることで作成したかと思います。今回は、別の方法でドーナツチャートを作成してみます。最近、sin、cosなどの三角関数を用いることが少しずつ増えてきましたが、三角関数を利用します。

作り方の特性上、1つのデータに対して1つのドーナツチャートを作成することになるため、単一ドーナツチャートという名前としています。今回は、とある会社のカテゴリー別売上を単一ドーナツチャートで表現していきます。

では、作り方の説明をはじめていきましょう。

単一ドーナツチャートの元データ

もととなるデータは以下のような項目のファイルになります。

具体的には、以下のようなファイルであり、このファイルをデータソースとして指定します。

  • 1列目:Category
  • 2列目:Path
  • 3列目:Value
CategoryPathValue
Furniture1450
Furniture101450
Office Supplies1350
Office Supplies101350
Technology1200
Technology101200

「Category」には、カテゴリーの名前が入ります。

「Value」には、全体を1000としたときの各カテゴリーの割合を入れます。例えば、「Furniture」のカテゴリーの場合、45%であり、450(=1000×45%(0.45))を入れます。

各カテゴリーに対して、2行のデータを用意し、「Category」「Value」には同じ値を指定します。

「Path」には、それぞれ、1と101が入ります。

ビンの作成

「Path」をもとに、以下のビンを作成します。

新しいフィールド名:Path (bin)
ビンのサイズ:1

これは、「Path」に、それぞれ、1と101を入れていますが、1から101の間を、サイズ1で分割することを意味します。

計算フィールドの作成

以下の計算フィールドを作成します。

名前:Index
INDEX()-1

「Index」は、 「Path (bin)」 の項番(0からはじまる)を示します。「Path (bin)」 は1から101の間をサイズ1で分割されているので、具体的には、0、1、2、・・・、100の項番となります。

名前:Max Value for Category
WINDOW_MAX(MAX([Value]))

「Max Value for Category」は、カテゴリーごとの「Value」の最大値を示します。「Value」には、カテゴリーごとに同じ値が入っているので、単純に「Value」の値になります。例えば、「Furniture」のカテゴリーの場合、450となります。

名前:Total Value
WINDOW_SUM(MAX([Value]))/2

「Total Value」は、各カテゴリーの 「Value」の合計、すなわち、1000を示します。2で割っているのは、各カテゴリーに対して、2行のデータを用意しているためです。

名前:Percentage
[Max Value for Category]/[Total Value]

「Percentage」は、全体に対する、各カテゴリーの「Value」の割合を示します。例えば、「Furniture」のカテゴリーの場合、「Percentage」は0.45(=450/1000)となります。

次に、ドーナツチャートを構成する計算フィールドについて説明するのですが、まず、その前に、イメージをざっくりと説明します。

ドーナツチャートは、以下の単位円(半径の長さが1である円)にて表現していきます。

Viz上で横軸をX座標に、縦軸をY座標とみたてると、(X,Y)=(sin(α),cos(α))となり、点をプロットし、それらの点をつなげていきます。

単位円

具体的には、以下のような計算式となります。

名前:Starting Point
(RUNNING_SUM([Percentage])-[Percentage])*360

「Starting Point」は、各カテゴリーの円上でプロットする開始位置(角度)を示します。

カテゴリー「Furniture」「Office Supplies」「Technology」の「Percentage」は、それぞれ、0.45、0.35、0.2となり、例えば、カテゴリー「Furniture」の「Starting Point」は、0度=(0.45-0.45)×360、360度=(0.45+0.35+0.2+0.45ー0.45)×360=0度、720度=(0.45+0.35+0.2+0.45+0.35+0.2+0.45ー0.45)×360=0度、・・・となります。

また、カテゴリー「Office Supplies」の「Starting Point」は、162度=(0.45+0.35ー0.35)×360、522度=(0.45+0.35+0.2+0.45+0.35ー0.35)×360=162度、822度=(0.45+0.35+0.2+0.45+0.35+0.2+0.45+0.35ー0.35)×360=162度、・・・となります。

名前:X
SIN(RADIANS((([Index]*[Percentage]*3.6))+[Starting Point]))

名前:Y
COS(RADIANS((([Index]*[Percentage]*3.6))+[Starting Point]))

Viz上の横軸をX軸、縦軸をY軸とみたとき、「X」はX座標を、「Y」はY座標を示します。

単位円は一周360度であり、カテゴリーごとに分割していきます。さらに、100個に分割して、それぞれ、点をプロットしていくイメージとなります。各点の間隔が「[Index]*[Percentage]*3.6」であり、各カテゴリーの最初の点をプロットする位置が「[Starting Point]」となります。

そして、SIN関数、および、COS関数の引数は、ラジアン単位にする必要があり、RADIANS関数をはさんで、度単位からラジアン単位に変換しています。

ワークシートの編集

次の流れでワークシートを編集していきます。

  1. マークタイプを「線」に変更します。
  2. 「Path (bin)」をマークパネルのパスに入れます。
  3. 「Category」をマークパネルの色に入れます。
  4. 「X」を列シェルフに入れます。
  5. 列シェルフにある「X」を右クリックして、「次を使用して計算」の「Path (bin)」を選択します。
  6. 「Y」を行シェルフに入れます。
  7. 行シェルフにある「Y」を右クリックして、「次を使用して計算」の「Path (bin)」を選択します。
  8. 列シェルフにある「X」を右クリックして、「表計算の編集」を選択します。
  9. 表計算画面が表示されるので、ネストされた計算にて「Start Point」を選択します。
  10. 次を使用して計算にて「特定のディメンション」を選択し、「Path (bin)」と「Category」にチェックを入れた状態にします。
表計算:X、ネストされた計算:Starting_Pointを説明する画像

  1. ネストされた計算にて「Total Value」を選択します。
  2. 次を使用して計算にて「特定のディメンション」を選択し、「Path (bin)」と「Category」にチェックを入れた状態にします。
表計算:X、ネストされた計算:Total_Valueを説明する画像
  1. 列シェルフにある「Y」を右クリックして、「表計算の編集」を選択します。
  2. 表計算画面が表示されるので、ネストされた計算にて「Start Point」を選択します。
  3. 次を使用して計算にて「特定のディメンション」を選択し、「Path (bin)」と「Category」にチェックを入れた状態にします。
表計算:Y、ネストされた計算:Starting_Pointを説明する画像
  1. ネストされた計算にて「Total Value」を選択します。
  2. 次を使用して計算にて「特定のディメンション」を選択し、「Path (bin)」と「Category」にチェックを入れた状態にします。
表計算:Y、ネストされた計算:Total_Valueを説明する画像

ワークシートの編集を説明する画像

ワークシートの微調整

次の流れでワークシートの微調整をしていきます。

  1. 列シェルフにある「X」を右クリックして、「ヘッダーの表示」のチェックを外します。
  2. 行シェルフにある「Y」を右クリックして、「ヘッダーの表示」のチェックを外します。
  3. Viz上で右クリックして、「書式設定」を選択します。
  4. 線の書式設定にて、シートのグリッド線、および、ゼロラインを「なし」に設定します。
  5. 「Percentage」をマークパネルのツールヒントに入れます。
  6. マークパネルのツールヒントにある「Percentage」を右クリックして、「書式設定」を選択します。
  7. 書式設定:集計(Percentage)にて、ペインの既定の数値を「パーセンテージ」に変更します。
  8. マークパネルにて、ツールヒントの「ツールヒントの編集」を開き、以下の通りに入力します。

Category: <Category>
Percentage: <集計(Percentage)>

  1. マークパネルのサイズを左クリックして、サイズを調整します。
  2. シートの名前を「カテゴリー別売上 単一ドーナツチャート」に変更します。
ワークシートの微調整

単一ドーナツチャートの完成

これで、カテゴリー別売上の単一ドーナツチャートが完成です。

カテゴリー別売上の単一ドーナツチャート

Tableau Publicのリンクを貼っています。

なお、以前、紹介したドーナツチャートの作り方は、以下になります。

円グラフ、ドーナツチャートについて