Rで作成した3DプロットをTableauに表示させる

Version 2

    Rではインタラクティブな3Dプロットを作成することができますが、これをTableauに表示させる方法について紹介したいと思います。

     

    以下、有名なirisの標本データの可視化です。

    画面を右クリックし、新しいタブでページを開いてください。(YouTubeの動画が開きます。)

     

     

     

    上記のようにRで作成されたインタラクティブな3DプロットをダッシュボードにWebオブジェクトとして埋め込むことで、2Dのプロットと3Dのプロットを比較して表示させることができます。またマウスを使って、3Dのプロットの見る角度を変えたり、大きさを変更することが可能です。

     

    ここでは、WebGLを利用しています。

    WebGLとはウェブブラウザ上でOpenGLグラフィックスを扱うための仕組みです。 rglパッケージではwriteWebGL()関数によって3次元プロットをWebGLとして出力することができます。 HTMLファイルが作成されるので、これをウェブブラウザで開くことでインタラクティブな3次元プロットをブラウザ上で利用できるようになります。

     

    こちらは以下のステップで実施しています。

     

    1.RStudio で"rgl"ライブラリをインストール、読み込みます。

    >install.packages("rgl")

    >library(rgl)

     

    2.R Studio から iris のデータを確認します。

    > head (iris )
      Sepal.Length Sepal.Width Petal.Length Petal.Width Species

    1          5.1        3.5          1.4        0.2  setosa
    2          4.9        3.0          1.4        0.2  setosa
    3          4.7        3.2          1.3        0.2  setosa
    4          4.6        3.1          1.5        0.2  setosa
    5          5.0        3.6          1.4        0.2  setosa
    6          5.4        3.9          1.7        0.4  setosa

     

    3.Iris の標本データを3Dプロットで描画します。

    plot3d(iris[, 1:3], col = as.numeric(iris$Species))

     

    4.3次元プロットをWebGLとして出力します。

    >writeWebGL(width=700, height=700)

     

    5.webGLディレクトリにhtmlファイルが作成されます。

    C:/Users/xxxxx/Documents/webGL/index.html

     

    6.簡易Webサーバープロセスを起動します。

    ここではPython 2.7をインストールして利用します。

     

    c:\Python27>python -m SimpleHTTPServer 8888

    Serving HTTP on 0.0.0.0 port 8888 ...

    127.0.0.1 - - [01/Jan/2017 15:21:38] "GET /webGL/ HTTP/1.1" 200 -

     

     

    7. Python のルートディレクトリに5.で作成されたHTMLファイルをweGLディレクトリごとコピーします。

     

    8.ブラウザーからHTMLファイルがアクセスできることを確認します。

    http://localhost:8888/webGL/

     

     

    9.TableuのダッシュボードでWebオブジェクトを追加し、URLhttp://localhost:8888/webGL/ を指定します。

     

     

    Rで作成された3DのプロットとTableauで表示での可視化を融合することでより直観に訴えるレポートが作れそうですね。

     

    以上、参考になれば幸いです。