3

R ではpersp3d、パッケージの関数を使用しrglて素敵な 3D プロットを取得しています。

ここで、persp3d関数を回転させ、回転した小さな画像をそれぞれ png ファイルとして保存します。次に、コマンドを使用して、ラテックスプレゼンテーションに png を含めたいと思いanimategraphicます。

したがって、どうすればこれを行うことができますか?

ラテックスで実装できるようにする必要があるため、pngファイルの名前はa1、a2などのようにする必要があります...

persp3d プロットを作成するための私のコードは次のとおりです。

persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=color[zcol2],
        ticktype="detailed", xlab="", ylab="", zlab="",axes=FALSE)

spin3d次に、次のコマンドでスピンしようとしました:

spind3d(rpm=3)

これは機能しません。また、これはpngをドライブに保存しませんか?

4

3 に答える 3

5

関数spin3dを使用してビューを変更しmovie3d、画像を保存する別の方法を次に示します。

library(rgl)
x <- seq(-10, 10, length= 30)
y <- x
f <- function(x,y) { r <- sqrt(x^2+y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
z[is.na(z)] <- 1
persp3d(x,y,z,theta=0,phi=25, col = "lightblue",
        ticktype="detailed", xlab="", ylab="", zlab="",axes=FALSE)
movie3d(spin3d(axis = c(0,0,1), rpm = 10), duration=6,  type = "png")

movie3dデフォルトでは、 によって設定されたフォルダにファイルが保存されることに注意してくださいtempdir()

于 2013-08-05T20:33:45.233 に答える
4
x=1:10
y=1:10
z=matrix(runif(100),10,10)
persp3d(x,y,z,theta=50,phi=25)

次に、theta または phi をループし、view3d を使用して角度を設定し、snapshot3d を使用して PNG を作成します。

theta = seq(0,360,len=10)
for(i in 1:10){
 snapshot3d(file=paste0("spin-",i,".png"))
 view3d(theta=theta[i])
}

theta の代わりに phi をループしたいかもしれません。とにかく、それはあなたが望むPNGを手に入れますよね?

于 2013-08-05T18:41:05.873 に答える
3

誰かが必要かもしれません。persp3Drgl には次の組み合わせを使用しました。

userMat = matrix(data = c( 0.4892255, 0.8709987, 0.04464279, 0,
                       -0.5228708, 0.2519508, 0.81430787, 0,
                       0.6980215, -0.4217298, 0.57868713, 0,
                       0.0000000, 0.0000000, 0.0000000, 1
                       ), nrow = 4, ncol = 4)

persp3Drgl(..., userMatrix = userMat )
par3d( windowRect=c( 0,0,100,100 ) )
snapshot3d( file.path(plotDir, "3D.png"), top = TRUE )

userMatrixまた、次のコマンドで値を追跡していました(マウスでプロットを回転させた後)

userMat = par3d(no.readonly=TRUE)$userMatrix
于 2015-10-28T15:42:44.690 に答える