Animation 将f输入R中rgl包中的play3d()和movie3d()
我不理解rgl包中play3d和movie3d所期望的输入f 我希望有人能纠正我的代码,帮助我理解play3d和movie3d的f输入 问题1:为什么上面的play3d线条足够正确,动画显示正确 问题2:为什么上面的play3d线不正确到足以触发错误Animation 将f输入R中rgl包中的play3d()和movie3d(),animation,3d,rgl,Animation,3d,Rgl,我不理解rgl包中play3d和movie3d所期望的输入f 我希望有人能纠正我的代码,帮助我理解play3d和movie3d的f输入 问题1:为什么上面的play3d线条足够正确,动画显示正确 问题2:为什么上面的play3d线不正确到足以触发错误 问题3:movie3d线路没有产生视频输出有什么问题?正如文档所说,f是“一个返回可传递给par3d的列表的函数”。它不是一个列表,这是你的使用过程 回答以下问题: R计算执行动画的lappy调用,然后play3d查看结果并终止,因为它不是函数
问题3:movie3d线路没有产生视频输出有什么问题?正如文档所说,
f
是“一个返回可传递给par3d的列表的函数”。它不是一个列表,这是你的使用过程
回答以下问题:
lappy
调用,然后play3d
查看结果并终止,因为它不是函数f
需要是一个函数,如帮助页面中所述f
时,它就会消失,因为它不是一个函数library(rgl)
nobs<-10
x<-runif(nobs)
y<-runif(nobs)
z<-runif(nobs)
df<-data.frame(x,y,z)
plot3d(df, type = "n" )
id <- NA
myplotfunction<-function(time) {
index <- round(time)
# For a 3x faster display, use index <- round(3*time)
# To cycle through the points several times, use
# index <- round(3*time) %% nobs + 1
if (!is.na(id))
pop3d(id = id) # Delete previous item
id <<- spheres3d(df[index,], r=0.025)
list()
}
play3d(myplotfunction, startTime = 1, duration = nobs - 1)
movie3d(myplotfunction, startTime = 1, duration = nobs - 1, fps = 1)
库(rgl)
这是一个有见地的回答。非常感谢。有一件事我仍在思考——fps在代码中的作用是什么?我试图改变它的值,但没有区别。我认为这会使球体以更快的顺序出现。我需要做什么才能使球体更快地连续出现?感谢您的帮助。fps
仅适用于movie3d
制作的GIF。使用fps=1
,调用该函数时time
每次递增1秒,GIF将被标记为每秒显示1帧。要使事情显示得更快,请更改myplotfunction
,使其对df
的行进行不同的索引。我会修改答案,让它更清楚。非常有用。非常感谢。
play3d(f=lapply(listofobs,myplotfunction), fps=1 )
movie3d(f=lapply(listofobs,myplotfunction), fps=1 , duration=20)
library(rgl)
nobs<-10
x<-runif(nobs)
y<-runif(nobs)
z<-runif(nobs)
df<-data.frame(x,y,z)
plot3d(df, type = "n" )
id <- NA
myplotfunction<-function(time) {
index <- round(time)
# For a 3x faster display, use index <- round(3*time)
# To cycle through the points several times, use
# index <- round(3*time) %% nobs + 1
if (!is.na(id))
pop3d(id = id) # Delete previous item
id <<- spheres3d(df[index,], r=0.025)
list()
}
play3d(myplotfunction, startTime = 1, duration = nobs - 1)
movie3d(myplotfunction, startTime = 1, duration = nobs - 1, fps = 1)