チラシの裏の設計書

プログラム開発、データ分析からロボット作りまでものづくり全般を思うがままに書き連ねたブログ。

Rで3Dグラフを作る(rglパッケージ)

※IT系はこちらへ移転

qiita.com

 

このブログでもたまに登場していますが

データ分析でお得な物件を探したい とか)

R言語を使ったプロットを進化させてみます。

 

rglという3Dプロットができるパッケージを追加すると色々できるみたいなのでお試し。

(Windows上で試してみます)

導入

まず、パッケージをダウンロードします。

http://cran.r-project.org/web/packages/rgl/index.html

image

Windowsで動くRGuiを使っている方は楽に使えます。

パッケージー>パッケージローカルにあるzipファイルから…

を選択し、ダウンロードしたzipを読み込み。

image

図のようなメッセージが出ればおk。

library(rgl)

で読み込んで、使える状態にします。

 

3Dプロットしてみる

早速使ってみます。

サンプルで適当に乱数で作ったデータを置いておきます。コピペでお使いください。

84.4118361 67.02094633 53.30306495 1
95.19853622 19.46755224 44.81424551 1
76.99221056 21.19832946 6.679098233 2
47.11851053 44.08072688 21.83290854 3
28.17605163 70.81807808 3.038094815 3
37.79006518 17.6206705 17.85126479 3
52.70716655 3.157611848 54.80928113 2
82.17892307 52.40771784 8.826890308 1
76.72345846 45.05295159 8.254543393 2
9.100676234 28.05738328 10.33647699 3
84.80308196 57.28399693 28.78125627 1
57.77000643 14.59246153 23.5896464 2
39.83637948 10.83326358 58.19865 3
29.0778965 27.42478172 36.72898976 3
39.13353415 61.22114732 36.7095343 3
82.98384957 52.79636373 2.636465571 1
6.463960197 31.90275242 42.21141831 3
57.70714968 48.01281819 11.08404224 2
6.262877946 5.154597262 18.14285997 3
26.13265512 60.96556647 37.1863922 3
2.843575692 50.21537584 21.85217763 3
76.32971877 40.43526046 37.41980928 2
51.23026568 16.61420881 20.80880777 2
9.711487254 73.88291056 38.66993505 3
82.02349732 31.48345024 19.24464369 1

1~3列目がデータ、4列目がカテゴリか何かのつもりです。

クリップボードから読み込む機能があるので便利です。

data<-read.table("clipboard")

そしてプロット

plot3d(data[,1:3],col=data[,4])

 

image

 

これだけで3Dの散布図ができるすぐれもの。

そして何がすごいってプロットされてるウィンドウをマウスでドラッグすると、ぐるぐると回転させることができます。

 

グラフの保存

そしてここからが本領発揮。

3Dとなると人に見せる時が困りもの。いろんな方向からみた図を保存しておくのも大変なので、グリグリ動く状態をそのまま保存しておきたいもの。

最近ではそういうことが可能になってるんです。

HTML5関連で注目されてるWebGLという機能があります。ブラウザ上で3Dグラフィックをサポートする機能です。

このrglというパッケージではこのWebGLを使ってブラウザ上で3Dグラフが再現できるように保存することができます。

writeWebGL(width=700, height=700)

しかも、この1行で。

すごい。

ということで適当にweb上に置いてみました。グリグリできて楽しいです。

http://tsukemono.ohitashi.com/R/webGL/sample.html

chromeoperafirefoxの最新のなら対応してるはず。IE11でも対応してたとは思います。