R で、3次元の散布図と95%信頼楕円体を一緒に描く方法
それぞれの軸は、x, y, z は、それぞれ Sepal.Length, Sepal.Width, Petal.Length です。つまる所、はじめの3列です。
rgl パッケージが必要ですので、インストールしておきましょう。
50ずつ、3グループになっているので、色と後半の楕円は、50ずつで処理しています。
for ループを使いましたが、3回に分けてデータを変えて楕円を書いても良いです。
library(rgl) Colour <- c( rep("red", 50), rep("blue",50), rep("green",50)) # red, setosa; blue, versicolor; green, virginica hoge3d <- iris # x, y, z は、それぞれ Sepal.Length, Sepal.Width, Petal.Length plot3d(hoge3d, size=1, axes=F,type="s", col=Colour) grid3d("x") grid3d("y") grid3d("z") # 95% 信頼楕円を書きます。 for (i in 0:2){ group_select <- c(1:50)+50*i Ellips_Colour <- c("red", "blue", "green") hoge1<- iris[group_select,1:3] ellips <- ellipse3d(cov(hoge1), centre=c(mean(hoge1[,1]), mean(hoge1[,2]), mean(hoge1[,3])), level = 0.95) shade3d( ellips , col = Ellips_Colour[i+1], alpha = 0.1, lit = FALSE ) }
3次元図は、保存の際は、2次元のグラフのように pdf で保存はできません。
eps (のちに pdf に変換可能) なら、
rgl.postscript("iris_with_ellipse.eps", fmt="eps" )グラウザーで表示して、ぐりぐり回すなら、
writeWebGL(width=500, height=550)などとすると "webGL" というフォルダー内に "index.html" というファイルで保存できます。
html の中身をそのまま貼り付けたのが、2番目の図ですが、回転できなかったらごめんなさい。