読者です 読者をやめる 読者になる 読者になる

Mukku John Blog

取り組んでいること を つらつら と

Power BIで、棒グラフを作ってみる-1

ggplot2で棒グラフを作成した時と、同じデータセットを使って、
Power BIで、どのような棒グラフが作れるかを試します。
mukkujohn.hatenablog.com

PowerBIのグラフ

PowerBIの棒グラフは、横棒グラフおよび縦棒グラフがあります。
Power BI での視覚化の種類 | Microsoft Power BI
縦棒グラフを基本にやっていきます。

棒グラフ

BODデータセットを使います。R: Biochemical Oxygen Demand

> BOD
  Time demand
1    1    8.3
2    2   10.3
3    3   19.0
4    4   16.0
5    5   15.6
6    7   19.8

まずは、x軸にTime列を、y軸にdemand列をマッピングします。

f:id:MukkuJohn:20160905210046p:plain
x軸にマッピングされたTime列ですが、連続値として扱われていますね。


離散値にするためには、グラフを選んで、視覚化ウィンドウの書式で変更します。
x軸カテゴリ -> 型フィールドから、連続から、カテゴリ別に変更します。
f:id:MukkuJohn:20160905210401p:plain

f:id:MukkuJohn:20160905210631p:plain
Time = 6に該当する棒が無くなりました。


棒グラフの書式を色々変更してみます。
f:id:MukkuJohn:20160905211637p:plain
上のグラフは、このあたりを変えてみましたが、全部GUIの操作だけでできます。

  • 各棒の塗りつぶし
  • グラフのタイトル
  • x軸/y軸のフォント色
  • グラフの背景画像
  • 定数線の追加

ggplot2と比較すると、各棒の枠の色が変更できないようです。

グループ化された棒グラフ

PowerBIでは、集合棒グラフと表示されています。

ToothGrowthデータセットを使います。R: The Effect of Vitamin C on Tooth Growth in Guinea Pigs

> str(ToothGrowth)
'data.frame':	60 obs. of  3 variables:
 $ len : num  4.2 11.5 7.3 5.8 6.4 10 11.2 11.2 5.2 7 ...
 $ supp: Factor w/ 2 levels "OJ","VC": 2 2 2 2 2 2 2 2 2 2 ...
 $ dose: num  0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 ...

x軸にdose列、y軸にlen列、グループ化はsupp列をマッピングします。
f:id:MukkuJohn:20160905212915p:plain
(デフォルトのままですと、x軸のdose列が、連続値として扱われていましたので、離散値に変更しています。)

y軸のlen値ですが、Power BIのデフォルトは、合計になっています。
マッピングしている箇所で、len値をどうするかを選択できます。
f:id:MukkuJohn:20160905213203p:plain


書式を変更してみます。
f:id:MukkuJohn:20160905213833p:plain

変更できる書式は、通常の棒グラフとほぼ同じですが、
異なる箇所が、この2点ですね。棒の枠の色の指定ができないのは同じです。

  • 各棒の塗りつぶしの指定ができない → グループ化ごとの棒ならできる
  • 凡例がついた

過去記事と同様に、dose=2 かつ supp=VCのデータを省いてみます。

tgDat <- ToothGrowth[ToothGrowth$dose != 2 | ToothGrowth$supp != "VC",]

f:id:MukkuJohn:20160905214253p:plain
Power BIだと、存在しないグループの棒のスペースは空いたままです。
ggplot2だと、空いたスペースまで棒が太くなってました。

個数を表す棒グラフ

特段、このような名前の棒グラフはあるわけではないのですが
過去記事との比較の意味を込めてます。

Power BIの棒グラフで、データの個数をy軸にマッピングしたいと思います。
diamondsデータセットを使います。diamonds. ggplot2 0.9.3.1

> str(diamonds)
'data.frame':	53940 obs. of  10 variables:
 $ carat  : num  0.23 0.21 0.23 0.29 0.31 0.24 0.24 0.26 0.22 0.23 ...
 $ cut    : Ord.factor w/ 5 levels "Fair"<"Good"<..: 5 4 2 4 2 3 3 3 1 3 ...
 $ color  : Ord.factor w/ 7 levels "D"<"E"<"F"<"G"<..: 2 2 2 6 7 7 6 5 2 5 ...
 $ clarity: Ord.factor w/ 8 levels "I1"<"SI2"<"SI1"<..: 2 3 5 4 2 6 7 3 4 5 ...
 $ depth  : num  61.5 59.8 56.9 62.4 63.3 62.8 62.3 61.9 65.1 59.4 ...
 $ table  : num  55 61 65 58 58 57 57 55 61 61 ...
 $ price  : int  326 326 327 334 335 336 336 337 337 338 ...
 $ x      : num  3.95 3.89 4.05 4.2 4.34 3.94 3.95 4.07 3.87 4 ...
 $ y      : num  3.98 3.84 4.07 4.23 4.35 3.96 3.98 4.11 3.78 4.05 ...
 $ z      : num  2.43 2.31 2.31 2.63 2.75 2.48 2.47 2.53 2.49 2.39 ...

Rでは、x軸だけにマッピングすると、個数を表すグラフをプロットしましたが、
Power BIでは、y軸もマッピングする必要があります。
f:id:MukkuJohn:20160905215341p:plain

y軸に、何かしらの個数をマッピングすれば、個数を表現できます。
f:id:MukkuJohn:20160905215506p:plain

個数の指定方法ですが、2種類があります。

  • カウント(一意の値のみ) → DISTINCTされる
  • カウント → されない

f:id:MukkuJohn:20160905215829p:plain

なので、カウント(一意の値のみ)を選択すると、データの個数が変わります。

過去記事と同様に、x軸にcutを指定し直せば、同じようなグラフが作成できます。
f:id:MukkuJohn:20160905220155p:plain


次回は、Power BIで、正負の値がある棒グラフと、積み上げ棒グラフを
作成してみます。