循环错误 - plot.new尚未调用

时间:2012-11-21 17:33:54

标签: r plot

我想模拟股票路径。我已经模拟了1000个路径,有22个交易日(1个起始值)。现在我想将它包含在我的演示文稿中,但是动画,所以我需要png文件。

我想创建1000个png文件,从第一个库存路径开始,然后是第二个,依此类推。

所以我从第一条路径开始,在情节中添加第二条,添加第三条,依此类推,所以最后我有1000个模拟的情节,这是我的代码:

for(i in 1:1000){
#jpeg(paste("1000s",i,".png",sep=""))
plot(c(1:23),matrix[,1],type="l",ylim=c(17,24))
lines(c(1:23),matrix[,i],type="l",col=i)
#dev.off()
}

问题在于,当循环到达下一个值时,每个附加部分都会消失,所以我尝试了:

plot(0,0 , xlim=c(1,23),ylim=c(17,24),xlab="",ylab="")
for(i in 1:1000){
jpeg(paste("1000s",i,".png",sep=""))
lines(c(1:23),matrix[,i],type="l",col=i)
dev.off()
}

(我知道这不是一个有效的例子,但我的问题只是循环的逻辑问题)当我最后一个代码时,我得到以下错误信息:plot.new还没有被调用。

矩阵有1000列和23行条目,这应该是库存路径的1000次模拟,为期22个交易日。

如何更改错误不再出现?谢谢!

2 个答案:

答案 0 :(得分:1)

使用两个for循环。外循环将创建每个png / jpeg。内在的一个将构建每个单独的情节。

for(i in 1:1000) {
  jpeg(paste("1000s", i, ".png", sep=""))
  plot(0, 0, xlim=c(1,23), ylim=c(17,24), xlab="", ylab="")

  for(j in 1:i) {
    lines(c(1:23), matrix[, j], col=j)
  } 
  dev.off()
}

答案 1 :(得分:0)

jpegplot都制作新图表。如果你想要动画构建而不是擦除,你只需要在循环中调用lines。有一点,lines不需要type = 'l'。这是默认值,命令的重点是默认值。如果你想用它绘制点,你可能会改变参数,但只是将它留下来。