はじめに
R言語ではscatterplot3dという関数を利用することで3次元データの描画が行えます。実際に描画した例は以下。
そんな3次元データですが、3次元データを2次元で表現するためには「見る角度」という情報も入力情報で与えて上げる必要があります。
というわけで、本記事ではscatterplot3dのオプションであるangleを変化させた場合に出力画像がどのように変化するのかについてアニメーションを利用して確認しました。
angleを変更しながら描画する
scatterplotのオプションは以下です。angleのデフォルトは「40」です。
function (x, y = NULL, z = NULL, color = par("col"), pch = par("pch"), main = NULL, sub = NULL, xlim = NULL, ylim = NULL, zlim = NULL, xlab = NULL, ylab = NULL, zlab = NULL, scale.y = 1, angle = 40, axis = TRUE, tick.marks = TRUE, label.tick.marks = TRUE, x.ticklabs = NULL, y.ticklabs = NULL, z.ticklabs = NULL, y.margin.add = 0, grid = TRUE, box = TRUE, lab = par("lab"), lab.z = mean(lab[1:2]), type = "p", highlight.3d = FALSE, mar = c(5, 3, 4, 3) + 0.1, bg = par("bg"), col.axis = par("col.axis"), col.grid = "grey", col.lab = par("col.lab"), cex.symbols = par("cex"), cex.axis = 0.8 * par("cex.axis"), cex.lab = par("cex.lab"), font.axis = par("font.axis"), font.lab = par("font.lab"), lty.axis = par("lty"), lty.grid = par("lty"), lty.hide = NULL, lty.hplot = par("lty"), log = "", asp = NA, ...) {
> scatterplot3d(iris[,1:3], color=colors_iris, pch =20)
angle=0
> scatterplot3d(iris[,1:3], color=colors_iris, pch =20, angle=0)
angle=90
> scatterplot3d(iris[,1:3], color=colors_iris, pch =20, angle=90)
angle=180
> scatterplot3d(iris[,1:3], color=colors_iris, pch =20, angle=180)
angle=270
> scatterplot3d(iris[,1:3], color=colors_iris, pch =20, angle=270)
angleを0~360で変更
以下のRスクリプトを用意してGIFを作成しました。
library(animation) library(scatterplot3d) colors <- c("#ff0000", "#0000ff", "#008000") colors_iris <- colors[as.numeric(iris$Species)] plot3d360 <- function() { for (i in 1:360) { scatterplot3d(iris[,1:3], angle=i, color=colors_iris, pch =20, main=i) } } saveGIF(plot3d360(), interval=0.05,movietype="gif", outdir=getwd(),width=640, height=480)
終わりに
angleの変化に伴うscatterplot3dですが、データによって見やすい角度は異なると思います。
そんな際、上記のスクリプトで動画にしてベストショットを探すというのもまた作戦の一つかもしれません。
以上、点群データを異なるアングルから見た際の出力画像の関係についてでした。