绘制移动时间序列曲线

时间:2011-02-05 05:04:35

标签: r animation plot time-series

对于时间序列曲线:

  1. 我想修复图表的尺寸和标签。
  2. 然后在图表上绘制一条移动曲线,进行一些时间序列分析。例如,convolution
  3. 我如何用R?

    实现这一目标

2 个答案:

答案 0 :(得分:4)

两个快点:

  • 旧的伎俩是在循环中单独编写一系列gif文件,然后使用像imagemagick这样的工具将它们“粘合”在一起成为动画gif

  • 还有更高级别的套餐,例如屡获殊荣的animation有助于此;某些功能可能与平台相关

答案 1 :(得分:3)

以下是一些入门的基本代码(如果对您很重要,可以添加网格线,图例等):

plotfun <- function(x) {
    plot( c(-0.5,-0.5,0.5,0.5), c(0,1,1,0), col='blue', xlim=c(-2,2),
         type='l', xlab='', ylab='' )
    if( x > -1 && x < 0 ) {
        polygon( c(-0.5, -0.5, x+0.5, x+0.5), c(0,1,1,0), col='yellow', border=NA )
        lines( c(-0.5, -0.5, 0.5, 0.5), c(0,1,1,0), col='blue' )
        lines( c(-1,x), c(0,x+1) )
    } else if( x >= 0 && x < 1 ) {
        polygon( c(x-0.5, x-0.5, 0.5, 0.5), c(0,1,1,0), col='yellow', border=NA )
        lines( c(-0.5, -0.5, 0.5, 0.5), c(0,1,1,0), col='blue' )
        lines( c(-1,0,x), c(0,1,1-x) )
    } else if (x >= 1) {
        lines( c(-1,0,1), c(0,1,0) )
    }
    abline(v=x, lty=3)
    lines( c(x-0.5,x-0.5,x+0.5,x+0.5), c(0,1,1,0), col='red' )
}

dev.new(height=3, width=6)

for(i in seq(-2.5, 2.5, 0.05) ) {
    plotfun(i)
    Sys.sleep(0.1)
}

您可以使用重复或while循环替换for循环并控制增量并自动重置以执行多个循环。

你也可以删除Sys.sleep并将其放入调用saveMovie,saveHTML或动画包中的其他函数中,以创建带动画的文件。

另一种让你通过来回移动滑块来控制动画的方法是:

library(TeachingDemos)

tkexamp( plotfun, list(x=list('slider', from=-2.5, to=2.5, resolution=0.01)),
    vscale=1)
相关问题