首页 > 解决方案 > 如何在 Rstudio 中查看此动画代码的输出

问题描述

此 R 代码用于创建动画情节,我已经运行它并且它确实运行但我无法查看它。据说将其输出保存在pdf文件中,尽管我看到了文件但无法打开它。我在How do I transfer output of animation R package on a beamer frame 中 获得了代码,因为我想学习如何R在乳胶上输入动画图,因此我以这个为例。你能告诉我如何查看它的输出或者Rstudio代码保存到哪里吗?如果您的意思是可以查看pdf最初保存到的输出,请告诉我如何?我正在使用 Acrobat Reade Dc。

brownianMotion <-  function(n=10,xlim=c(-20,20),ylim=c(-20,20),steps=50)
  {
    x=rnorm(n)
    y=rnorm(n)
    for (i in 1:steps) {
      plot(x,y,xlim = xlim,ylim = ylim)
      text(x,y)

      # iterate over particles
      for(k in 1:n){
        walk=rnorm(2); # random move of particle

        x[k]=x[k]+walk[1] # new position
        y[k]=y[k]+walk[2]

        # simple model for preventing a particle from moving past the limits
        if(x[k]<xlim[1]) x[k]=xlim[1]
        if(x[k]>xlim[2]) x[k]=xlim[2]
        if(y[k]<ylim[1]) y[k]=ylim[1]
        if(y[k]>ylim[2]) y[k]=ylim[2]
      }
    }
}


pdf("frames.pdf")                # output device and file name
par(xaxs="i", yaxs="i", pty="s") # square plot region
par(mai=c(0.9,0.9,0.2,0.2))      # plot margins

brownianMotion(n=20, steps=400)  # 20 particles, 400 time steps

标签: r

解决方案


这里有两件事:

  1. 您需要dev.off()在绘图后添加,以便将当前绘图保存到输出设备

  2. 循环步骤正在为每个绘图重写相同的文件名,因此您最终只能在frames.pdf. 按照本教程,您应该将单独的 pdf 文件写入输出文件夹,然后在 LaTeX 中为它们制作动画。

brownianMotion <-  function(n=10,xlim=c(-20,20),ylim=c(-20,20),steps=50){
    x=rnorm(n)
    y=rnorm(n)

    for (i in 1:steps) {
      pdf(paste0("out/frames", i, ".pdf"))  # save frames{i}.pdf to 'out' folder
      plot(x,y,xlim = xlim,ylim = ylim)
      text(x,y)
      dev.off()                             # Adding dev.off()

      ...
    }
}

par(xaxs="i", yaxs="i", pty="s") # square plot region
par(mai=c(0.9,0.9,0.2,0.2))      # plot margins

if (!dir.exists("out")) dir.create("out")  # create 'out' folder if it doesn't exist
brownianMotion(n=20, steps=4)    # 20 particles, 4 steps

out文件夹将位于您的工作目录所在的位置(用于getwd()查看它)。


推荐阅读