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

Mukku John Blog

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

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

PowerBI 棒グラフ

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

正負で色を塗り分ける

過去記事と同じデータを使います。

> head(csub)
      Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y
101 Berkeley 1900        NA        NA     -0.171  0.108
102 Berkeley 1901        NA        NA     -0.162  0.109
103 Berkeley 1902        NA        NA     -0.177  0.108
104 Berkeley 1903        NA        NA     -0.199  0.104
105 Berkeley 1904        NA        NA     -0.223  0.105
106 Berkeley 1905        NA        NA     -0.241  0.107

> str(csub)
'data.frame':	105 obs. of  6 variables:
 $ Source    : chr  "Berkeley" "Berkeley" "Berkeley" "Berkeley" ...
 $ Year      : num  1900 1901 1902 1903 1904 ...
 $ Anomaly1y : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Anomaly5y : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Anomaly10y: num  -0.171 -0.162 -0.177 -0.199 -0.223 -0.241 -0.294 -0.312 -0.328 -0.281 ...
 $ Unc10y    : num  0.108 0.109 0.108 0.104 0.105 0.107 0.106 0.105 0.103 0.101 ...

x軸にYearを、y軸にAnomaly10yをマッピングします。
f:id:MukkuJohn:20160909185201p:plain

書式を探しても、正負で塗りつぶし色を分けることができなそうです。
そのため、過去記事と同様に、正負を表す列を追加します。

#pos列がAnomaly10yの正負を表しています
> head(csub2)
      Source Year Anomaly1y Anomaly5y Anomaly10y Unc10y  pos
101 Berkeley 1900        NA        NA     -0.171  0.108 TRUE
102 Berkeley 1901        NA        NA     -0.162  0.109 TRUE
103 Berkeley 1902        NA        NA     -0.177  0.108 TRUE
104 Berkeley 1903        NA        NA     -0.199  0.104 TRUE
105 Berkeley 1904        NA        NA     -0.223  0.105 TRUE
106 Berkeley 1905        NA        NA     -0.241  0.107 TRUE

> str(csub2)
'data.frame':	105 obs. of  7 variables:
 $ Source    : chr  "Berkeley" "Berkeley" "Berkeley" "Berkeley" ...
 $ Year      : num  1900 1901 1902 1903 1904 ...
 $ Anomaly1y : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Anomaly5y : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Anomaly10y: num  -0.171 -0.162 -0.177 -0.199 -0.223 -0.241 -0.294 -0.312 -0.328 -0.281 ...
 $ Unc10y    : num  0.108 0.109 0.108 0.104 0.105 0.107 0.106 0.105 0.103 0.101 ...
 $ pos       : logi  TRUE TRUE TRUE TRUE TRUE TRUE ...

先ほどと同様にグラフを作成しますが、凡例にpos列を設定します。
f:id:MukkuJohn:20160909185850p:plain

あとは、凡例で塗りつぶし色を分けるだけです。
f:id:MukkuJohn:20160909190117p:plain


その他の変更可能は、前回の記事と同様です。


ggplot2で棒グラフを作成した記事では、この2つを実施しましたが、

  • 棒の幅と間隔を調整する
  • グループ化された棒グラフの幅と間隔を調整する

Power BI ではできません。

そもそも、わざわざ棒の幅を調整するケースが思いつかないです。

積み上げ棒グラフ

ggplot2では、コマンドで指定していました。

geom_bar(stat="identity")

Power BIでは、凡例を指定するだけです。
データは、過去記事と同様に、cabbage_expを使います。

> head(cabbage_exp)
  Cultivar Date Weight        sd  n         se
1      c39  d16   3.18 0.9566144 10 0.30250803
2      c39  d20   2.80 0.2788867 10 0.08819171
3      c39  d21   2.74 0.9834181 10 0.31098410
4      c52  d16   2.26 0.4452215 10 0.14079141
5      c52  d20   3.11 0.7908505 10 0.25008887
6      c52  d21   1.47 0.2110819 10 0.06674995

> str(cabbage_exp)
'data.frame':	6 obs. of  6 variables:
 $ Cultivar: Factor w/ 2 levels "c39","c52": 1 1 1 2 2 2
 $ Date    : Factor w/ 3 levels "d16","d20","d21": 1 2 3 1 2 3
 $ Weight  : num  3.18 2.8 2.74 2.26 3.11 1.47
 $ sd      : num  0.957 0.279 0.983 0.445 0.791 ...
 $ n       : int  10 10 10 10 10 10
 $ se      : num  0.3025 0.0882 0.311 0.1408 0.2501 ...

x軸にDate、y軸にWeight、凡例にCultivarを指定します。
f:id:MukkuJohn:20160909191644p:plain
上のグラフは、書式の変更で、下記を行っています。

  • 凡例を右側に配置
  • データラベルを追加

この積み上げ棒グラフですが、Power BIは、グラフを作成した後でも、
x軸やy軸の並び替えはできますが、凡例の並び替えはできないですね。
f:id:MukkuJohn:20160909192412p:plain

ggplot2は、マッピングする時の順序指定で、積み上げの順序を制御できましたが、
Power BIは指定ができないので、凡例の並び替えは、お手上げです。

100%積み上げ棒グラフを作成する

ggplot2は、plyrパッケージを使って、パーセント列を計算して…でしたが、
Power BIでは、グラフの種類を選択し直すだけです。
f:id:MukkuJohn:20160909193456p:plain
1つ前の画像と比較して頂きたいのですが、視覚化ペインで
100%積み上げ棒を選択するだけで良いです。


過去記事(ggplot2で、棒グラフを作る-3)では、下記の2つをさらに扱っています。

  • データラベルの追加
  • (Cleveland)ドットプロット

mukkujohn.hatenablog.com


データラベルですが、Power BIでは、3点しか設定できません

  • フォント色
  • 小数点以下の桁数
  • フォントサイズ

f:id:MukkuJohn:20160909194629p:plain
細かい位置の指定や、単位を付与するなどできません。

(Cleveland)ドットプロットですが、Power BIでは、できません
棒グラフでは、棒の表示有無が指定できません。
散布図で作ろうにも、離散値をx軸に取れません。
(散布図については、Power BIで散布図を作成する記事で、細かく扱います。)


次回は、Power BIで折れ線グラフを作成してみます。