【PowerBIメモ】ggplot2を使って、Ｒのグラフィックを埋め込んでみる

以前の記事で、Rスクリプトを使ってPowerBIのデータセットを作成する手順に取り組んでみました。
今回は、Rを使ったグラフィックに挑戦してみようと思います。
使うパッケージはもちろんみんな大好き```{ggplot2}```でございます。

#対象読者
・Rの基本的な操作が分かる人
・PowerBIの使い方の幅を広げたい人

#データセットの準備
まずはデータセットを準備しますが、一番ポピュラーなirisデータセットを使おうと思います。
irisって何？って人はこちらのブログが参考になるかもです。

[irisの正体](http://d.hatena.ne.jp/tsutatsutatsuta/20121206/1354737461)

ざっくり言うと、「あやめ（iris）」という花の『がく（Sepal）』の長さと幅、『花びら（petal）』の長さと幅、
それぞれの種別（setosa，virginica，vergicolar）のデータセットです。
...まあ、今回はあまりデータの内容は重要ではありませんので、さらっと流してＯＫです。

とりあえずPowerBIに読み込みます。
PowerBIの「データを取得」→「Rスクリプト」を起動して、以下をコピペ。
irisはRのサンプルデータとして用意されているため、コードは１行（笑）

```R:iris.r
df <- iris
```


#グラフ作成

続いてグラフ作成です。

_※グラフ作成前に、「クエリを編集」から、データセットにインデックス列を挿入しておくといいかもしれません。Rで読み込んだ際に重複行の削除が防げます。_

「視覚化」の項目に以下のようなＲのマークがあるのでクリック。

![図1.png](https://qiita-image-store.s3.amazonaws.com/0/165789/7ec16dc8-ccef-5861-d825-20fafa75f2e6.png)

Rスクリプトで作成したグラフを置く場所を決めます。

![図2.png](https://qiita-image-store.s3.amazonaws.com/0/165789/ae6df3c1-c683-b80b-8f32-35a81c8d3260.png)

下部スクリプトエディターが開くので、必要な変数をフィールドから選択。
（今回は、Petal.LengthとSepal.Length,Speciesを利用します。）

以下のとおり、ggplot2で作成するコードを記載します。
いつもどおり、詳細な説明はコード内コメントに預けます。

```r:ggplot2
#ggplot2を読み込みます
library(ggplot2)

#グラフに単回帰分析の結果を書き込むため、lmで単回帰分析を出力しておきます。
result <- lm(Petal.Length~Sepal.Length,data=dataset)

#回帰式の情報を読み取ります
lma <- round(result$coefficients[[2]],2) #傾き
lmb <- round(result$coefficients[[1]],2) #切片
rsq <- round(summary(result)$adj.r.squared,2) #自由度調整済み決定係数
pv <- summary(result)$coefficients[,"Pr(>|t|)"][[2]] #P値
pvalue <- paste("P-value ",if(pv<0.01){
  "< 0.01"
} else if(pv <0.05){
  "< 0.05"
} else {
  paste("=",round(pv,3))
}
) #グラフ記載用に、P値に応じて出力を加工します


#いよいよggplot！
ggplot(dataset, aes(Sepal.Length, Petal.Length))+ #変数は、Sepal.Length（がく）とPetal.Length（花弁）ですよ
  geom_point(aes(colour=Species))+ #Species（種）ごとに色分けしますよ
  stat_smooth(method = "lm")+ #回帰直線描きます
  annotate("text", label = paste("y=",lma,
                                 "x",ifelse(lmb>0,"+",""),
                                 lmb),
           x = 7, y = 3)+ #回帰式書きます
  annotate("text",label = paste("Adjusted R-squared =",rsq),x=7,y=2)+ #決定係数書きます
  annotate("text",label = pvalue, x=7, y=1) #P値書きます
```

![図3.png](https://qiita-image-store.s3.amazonaws.com/0/165789/01404707-893f-00a6-f10b-cf35e51f38f8.png)


単に散布図描いても面白くないので、統計解析に強いRを使って、回帰式等をグラフ内に差し込んでみました。
PowerBIの標準的な使い方だと回帰式等の結果は表示できないので、
単なる２変数の単回帰でも、ちょっと統計解析色を出せますね。
（実際は単回帰だけで事が解決することはほとんど無いですけど・・・）


・・・・・が、文字がちっちゃいですね（汗）。回帰分析の結果の値もなんか不恰好。
このへんはコードをいじるとどうにでもなります。
ggplot2の使い方は以下が詳しいです。

[ggplot2 — きれいなグラフを簡単に合理的に](https://heavywatal.github.io/rstats/ggplot2.html)


#Rグラフィックもぬるぬる動くのがPowerBIのおススメ点

PowerBI上なら、Rグラフィックもフィルター操作等でぬるぬる動きます。

スライサーなどと一緒に使ってみてくださいね。
（上記データだと、結果の値があっちこっちいっちゃうので、やはり改善余地ありですが。）

![メディア1.gif](https://qiita-image-store.s3.amazonaws.com/0/165789/13dade4f-8b32-e360-9e7f-bee9d125b355.gif)


#おまけ

PowerBIだけだと実装しづらい散布図行列図なんかも、簡単に組み込めますね。
多変数だと煩雑すぎて解釈不能になるので、変数を絞ってお使いください。
各変数間の相関をざっと把握できるので、個人的に好きなグラフです。

```R:psych.r
library(psych)
pairs.panels(dataset)
```

![図4.png](https://qiita-image-store.s3.amazonaws.com/0/165789/28a06d18-ffa7-b785-4dad-390c248f60eb.png)

#おわりに
ggplot2の必要最小限の知識でRグラフィックを実装してみましたが、
実用していくためには細部への気配りも必要になりそうです。
こちらも引き続き修行しなければならないのを痛感しました。

Rグラフィックを簡単にPowerBI上に組み込めることの紹介でした。

_※PowerBIサービスにアップロードしてRグラフィックを共有・閲覧するのは、
　有料のproライセンスが必要ですのでご注意ください。_