トップページ | ひとつ上のページ | 目次ページ | このサイトについて | ENGLISH

Plotly

Plotlyは、 RやPython で動的なグラフ操作ができるソフトです。 グラフの一部をクローズアップするような グラフィカル分析 ができます。 三次元のグラフをグルグル回す分析もできます。

ggplot2 と比べると、コードが少しシンプルです。

ただ、層別の分析は機能が少なめです。 また、動的なグラフを作るため、グラフの表示に時間がかかります。
動的なグラフィカル分析

インストールの苦難

Plotlyはいろいろな環境で使えるようになっているので、いくつか試しているのですが、 筆者の場合、うまく行ったものと、行かないものがあります。

RでPlotlyを使うやり方しか成功していないこともあり、以下は、Rを使った例になります。

うまく行ったやり方

うまく行かなかったやり方

共通のコード

Rでの使用例は下記になります。 plotlyというパッケージをあらかじめインストールしておきます。

下記は、コピーペーストで、そのまま使えます。 この例では、Cドライブの「Rtest」というフォルダに、 「Data.csv」という名前でデータが入っている事を想定しています。

「plot_ly」から始まる命令文の前に、下記は必ず必要です。

library(plotly) # パッケージの読み込み
setwd("C:/Rtest") # 作業用ディレクトリを変更
Data <- read.csv("Data.csv", header=T) # データを読み込み

散布図

散布図 の作り方です。

一次元散布図 ジター

ggplot2 の場合は、一次元散布図の機能や、一次元散布図を素直にジターにする機能があったのですが、 Plotlyではないようです。 Plotlyの場合は、箱ひげ図のオプションとして、箱ひげ図の横に一次元ジター散布図を作る機能があります。 ちなみに、「boxpoints="all"」がないと、箱ひげ図の外れ値をジター散布図で書き込んでくれます。

plot_ly(Data, x=~C1, y=~Y1, type = "box", boxpoints="all",jitter = 0.5) # 一次元ジター散布図を描く # 一次元ジター散布図を描く
1次元散布図

二次元散布図 色分け・形分け

データは、「C1」という列名でカテゴリがあり、「X1」、「Y1」という列名で数値が入っていることを想定しています。
データの読み込みまでは、上記と同じです。

plot_ly(Data, x=~X1, y=~Y1, type = 'scatter', color=~C1, symbol = ~C1)# 二次元散布図 色分け・形分け
二次元散布図 色分け

色分けや形分けをしない場合は、C1を指定しているところが不要です。
plot_ly(Data, x=~X1, y=~Y1, type = 'scatter')# 二次元散布図

三次元散布図 色分け・形分け

データは、「C1」という列名でカテゴリがあり、「X1」、「Y1」、「Z1」という列名で数値が入っていることを想定しています。
基本的には、二次元散布図にZ軸の変数の指定が増えただけです。 ただ、デフォルトだと、プロットが大きすぎるので、ここでは少し小さめに設定しています。

plot_ly(Data, x=~X1, y=~Y1, z=~Z1, type = 'scatter3d', color=~C1, symbol = ~C1, marker = list(size = 3))# 三次元散布図 色分け・形分け
三次元散布図 色分け

折れ線グラフ

折れ線グラフ の作り方です。

Plotlyの 折れ線グラフ は、折れ線グラフ用の何かはなく、 2次元散布図 のデータを線でつないだものです。 X1が等間隔のデータがない時に、等間隔にデータを並べる方法等、基本的に ggplot2 と同じです。

一番簡単な折れ線グラフ

データは、「X1」という列名で横軸にするもの、「Y1」という列名で数値が入っていることを想定しています。

plot_ly(Data, x=~X1, y=~Y1, type = 'scatter', mode = 'lines+markers')# 折れ線グラフを描く
折れ線グラフ

'lines+markers'ではなく、'lines'にすると、プロットが取れて、線だけになります。

層別の折れ線グラフ

データは、「X1」という列名で横軸にするもの、「Y1」、「Y2」、「Y3」、という列名で数値が入っていることを想定しています。 Xが共通で、Yが複数あるような場合に、ひとつのグラフで表したいことがあります。 この場合は、Yをつなげて、ひとつの列にして、列の違いを表す変数を作ると、グラフにできます。

なお、下記のプログラムでは、ひとつの列にする時に「X1の列以外をつなげる」という指示の出し方をしています。 XでもYでもない列があると、その列もYとして積み上げられてしまいます。

library(tidyr) # パッケージの読み込み
Data_long <- tidyr::gather(Data, key="Yno", value = Ys, -X1) # 縦型に変換(X1の列以外を積み上げる)
plot_ly(Data_long, x=~X1, y=~Ys, type = 'scatter', color=~Yno, symbol = ~Yno, mode = 'lines+markers')# 層別の折れ線グラフを描く
層別の折れ線グラフ



参考文献

RでPlotly

Plotly社のRのページ https://plot.ly/r/
英語のページですが、できあがりのグラフとコードがセットで説明されていますし、 コードも短いものばかりなので、英語の苦手な方でも欲しい情報が取れるのではないかと思います。 R以外でPlotlyを使う場合の説明も、もちろんあります。


順路 次は PandasのPlot

Tweet データサイエンス教室