rglパッケージで3D散布図&アニメーションをかく

久しぶりに備忘録。少し手を焼いたので。
Rで3D散布図。
rglパッケージは普通にインストール。
まずはデータ読み込み。ggplot2のmsleepデータセットを用いる。

library(rgl)
data(msleep, package="ggplot2")

plot3dコマンドで散布図作製。マウスでグリグリ動かすこともできる。

open3d(windowRect=c(0,0,512,512))
bg3d("white")
plot3d(x=msleep$sleep_total-msleep$sleep_rem, y=msleep$sleep_rem, z=msleep$awake, col=msleep$conservation, xlab="NREM", ylab="REM", zlab="AWAKE")

さらにグリグリうごかしている様子をアニメーションとして保存したい場合は、ImageMagickをインストールしておいて:

m<-par3d("userMatrix") 
Sys.setenv(PATH=paste("/opt/local/bin", Sys.getenv("PATH"), sep=":")) 
  #change this depending on your env.	
movie3d(par3dinterp(userMatrix=list(m, rotate3d(m, pi/4, 1, 0, 0), rotate3d(m, pi/4, 0, 1, 0), rotate3d(m, pi/4, 0, 0, 1))), duration=6, movie="msleep", dir=".", convert="convert -delay 1x%d %s*.png %s.%s")

NREMとREMとAWAKEの合計時間は24時かんなので見事に1つの平面にのっていますねw

open3dで作ったウィンドウを消すには:

rgl.close()

コメント

タイトルとURLをコピーしました