在R中逐步绘制并且不重置

时间:2013-03-26 01:15:44

标签: r plot updates

您将使用哪些选项(和包)逐步绘制计算结果?

想象一下,我想绘制一个持续很长时间的计算结果,我不想等到最后看到一些结果。 绘制每个单点并不是一个好主意,因为每次启动绘图命令都会非常慢。 我将绘制每个N点(将它们保存在矢量上)。

例如,如果我使用Fibonacci系列,在两个嵌套循环中打破循环,以便每10次迭代绘制结果:

fibo=rep(0,112);fibo[1]=0;fibo[2]=1;
plot(fibo)              #to initialize 
for(ii in 0:10) {
  for(jj in 0:9) {
    fibo[ii*10+jj+3]=fibo[ii*10+jj+2]+fibo[ii*10+jj+1];
  }
plot(fibo)
}

但它不会保留上一次迭代的图形。我是怎么做到的 这不是一个很好的例子,因为数字增长太快。并且绘图初始化不会提前知道最大y值。 也许最好使用其他更好的图形包?

1 个答案:

答案 0 :(得分:3)

以下是一个简单的示例,说明如何通过设置应绘制的点并在满足此条件时仅添加points来完成此操作:

# set the frequency with which to plot points
plotfreq <- 10

# set the x and y limits of the graph
x.limits <- c(1,100)
y.limits <- c(0,100)

# initialise a vector and open a plot
result <- vector(mode="numeric",length=100)
plot(result,ylim=y.limits,xlim=x.limits,type="n")

# do the plotting
plot.iterations <- seq(plotfreq,length(result),by=plotfreq)
for (i in seq_along(result)) {
  result[i] <- result[i] + i

  # only plot if the data is at the specified interval
  if (i %in% plot.iterations) {
    points(i,result[i])
  }

}