データをダイナミックに可視化してクラウドから呼び出す【plotly, chart studio】


Rやpythonでplotlyというパッケージがありまして、動的な可視化ができるので、その使い方の説明をしようかと。
ついでに作図したものをchart studioというクラウド上のリポジトリに保存してhtmlタグ化する方法も紹介します。

本記事の内容
**・plotlyの使い方**
**・chart studioの使い方**


#世はまさに大可視化時代

今回はRで紹介します

まずplot

```R
library(plotly)

fig <- plot_ly(data = iris, x = ~Sepal.Length, y = ~Petal.Length, type = 'scatter',
               mode = 'markers', symbol = ~Species, symbols = c('circle','x','o'),
               color = I('black'), marker = list(size = 10))

fig

```

![001.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/ba72bd3e-58df-e3b4-56c8-6614cc2ce1b4.gif)



こんな感じで動的な可視化ができます。

動的な結果を保存したい場合はRstudioならExportボタンからwebページで保存を選択すると標準設定にしているブラウザでhtmlが立ち上がると思うので、ブラウザ側からwebページの保存を行ってください。

でもこれだとhtmlを共有しないと結果が確認できない。

#そうだ、クラウドにしよう。

plotlyはchart studioと結びつけて自分のplotを保存したり公開したりできます。
早速使ってみましょう

[chart studio 新規登録](https://plot.ly/api_signup)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/c3fc1512-0e17-609c-fe94-96ea8d2ff4c7.png)


↑ここでまず登録します。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/88421f70-a2c8-c1c7-b924-cbf82c1c1a98.png)

登録が完了したら右上からsettingsを選んで、APIをcreateしましょう。
表示されたAPIをメモしたらRに戻って自分の名前とAPI keyを指定します。

```R
Sys.setenv("plotly_username"="Ringa-hyj")
Sys.setenv("plotly_api_key"="api_key")
```

あとは上記のように図を作って変数に入れたらapi_create関数でchart studioにデータとスクリプトがアップロードしましょう。

```R
options(browser = 'false')
api_create(fig, filename = "iris-data-plot")
```

chart studioのページでは先ほどの結果がアップロードされていると思います。
データは秘密にしておきたい場合は鍵マークをクリックして鍵ををかけておきましょう。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/ed1de2a1-2c61-7332-1e9c-9eac3dbf93a7.png)



こうして作成した図は埋め込み用のhtmlタグを生成できます。
図の下の方にあるコメント欄の右上のembedから

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/5d0d574e-7378-a214-3ea5-c8d1d483d9bc.png)


htmlなどが生成できます。
試しにQiitaへコード指定もコメント指定もせず、そのまま張り付けると以下のようになります。


<div>
    <a href="https://plot.ly/~Ringa-hyj/5/?share_key=Hw5xakGRgmMydSZJt6mOjp" target="_blank" title="iris-data-plot" style="display: block; text-align: center;"><img src="https://plot.ly/~Ringa-hyj/5.png?share_key=Hw5xakGRgmMydSZJt6mOjp" alt="iris-data-plot" style="max-width: 100%;width: 600px;"  width="600" onerror="this.onerror=null;this.src='https://plot.ly/404.png';" /></a>
    <script data-plotly="Ringa-hyj:5" sharekey-plotly="Hw5xakGRgmMydSZJt6mOjp" src="https://plot.ly/embed.js" async></script>
</div>

クリックすると描画先へ飛んでくれるだけですが・・・

Qiitaでもう少し工夫して魅せたいという方はこちらを

[Plotlyを使った描画結果をQiita内にCodePen埋め込むことで確認する](https://qiita.com/wakame1367/items/b78b7f758ce163081362)


#おまけ

plotlyでもtableauでもD3.jsでも方法はなんでもいいのですが、見せ方一つでデータの伝わり方は変化するので可視化は工夫したいものです。
可視化で手を抜くと、時に間違った伝わり方をしたり、重要なポイントを自分自身が見落とす可能性もあります。

![newplot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/cb77fc11-8005-536a-cfe3-405f13042cbb.png)



![slider2017.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/275572/663bd9ad-3741-d249-0dfa-30645bf473a8.gif)



plotlyほんとスゲー
公式がいくつかサンプルの使い方を示してくれているので参考に。
[graphing libraries](https://plot.ly/r/)


可視化は奥が深い。もっと色々使えそうなもの探さなくては。。

基本的な使い方は公式のドキュメントを参照ください
[Getting Started with Chart Studio in R](https://plot.ly/r/getting-started-with-chart-studio/)