使用R语言绘制动画可以方便地观察到数据的变化行为。以之前Chrome在收集页面资料时使用的指数平滑算法为例,绘制一个在不同系数且目标值不断变化(应用场景不是页面访问统计)的情况下的曲线逼近行为。
首先要确保在R中安装了animation包, 如果需要保存成GIF动画,还需要安装ImageMagick。GIF的每一帧是基于一个plot操作的。
下面是一个示例代码:
library(animation) ani.options(interval = 0.2) #生成GIF generateGIF<-function(coeff,loopingCount){ layout(matrix(c(1, rep(2, 5)), 6, 1)) saveGIF(generatePlots(coeff,loopingCount)) } #动画绘制函数 generatePlots<-function(coeff,loopingCount){ oopt = ani.options(interval = 0.2, nmax = loopingCount) #初始化绘图,并指定座标范围 plot(0,0,xlim = c(0,ani.options("nmax")), ylim = c(0, 3500),col='blue',xlab="black:target value, red:actual value",ylab="Values") tgtValues<-c(0) newValues<-c(0) posValues<-c(0) oldValue=0 for (i in 2:loopingCount) { tgtValues[i]=1000+rnorm(1,mean=500,sd=800) newValues[i] = tgtValues[i]*coeff+newValues[i-1]*(1-coeff) posValues[i] = i plot(0,0,xlim = c(0,ani.options("nmax")), ylim = c(0, 3500),col='blue',xlab="black:target value, red:actual value",ylab="Values") points(posValues,tgtValues,col="black") points(posValues,newValues,col="red") lines(posValues,newValues,col="red") ani.pause() } }
*CSDN上的GIF都是死的,只能放到别处了!
《效果图》