我正在尝试创建一个放大圆来测试鱼的表观隐藏阈值。我希望能够控制圆的半径和半径增加的速率。 我有以下代码:
library(plotrix)
px=1:50
py=1:50
plot(px,py,type="n",xlab="",ylab="",axes = FALSE)#create blank plot
x=25#set x location of circle
y=25#set y location of circle
radius=seq(1,20,by=.5)#set sequence of radii to plot
#plot circle on top of each other to give appearance of growing circle
#at a rate of Sys.sleep(x)
for (i in radius){
draw.circle(x,y,radius = i,col="black")
Sys.sleep(1)#plot one circle per second
}
该代码允许我更改圆的半径和速率,但是,如果Sys.sleep(x)设置为低于1,则for循环需要太长时间才能处理并跳过序列中的圆圈。是否有替代for循环可以加快绘图速度,以便我可以让整个动画运行速度超过每秒1帧? 谢谢
答案 0 :(得分:0)
我怀疑Students
比for循环慢了plotrix
。你可以只绘制一个正常的点,让他用cex
精益求精;将所有内容包装成函数。
growCycle <- function(x) {
plot(25, 25, xlab="", ylab="", axes=FALSE, asp=1, col=1, pch=20, cex=x)
Sys.sleep(.2) # at least 5 fps
}
注意:考虑更多图形参数,请考虑?plot
和?par
。
然后使用sapply()
:
radius = seq(1, 20, by=.5)
sapply(radius, growCycle)
结果速度提高了400%!
希望这有帮助。