R绘制动态曲线

简介: 使用R语言绘制动画可以方便地观察到数据的变化行为。以之前Chrome在收集页面资料时使用的指数平滑算法为例,绘制一个在不同系数且目标值不断变化(应用场景不是页面访问统计)的情况下的曲线逼近行为。

使用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都是死的,只能放到别处了!

效果图


目录
相关文章
|
数据可视化
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
19728 2
|
3月前
threeJs绘制曲线
这篇文章讲解了如何使用Three.js中的CatmullRomCurve3来绘制平滑的曲线,并提供了实现的代码示例。
49 3
threeJs绘制曲线
|
4月前
|
数据可视化 数据挖掘 Python
绘制带误差分析的柱状图
【9月更文挑战第1天】在数据分析与科研中,带误差分析的柱状图能直观展示数据分布与不确定性。本文介绍使用Python的Matplotlib库和Excel绘制此类图表的方法,包括安装库、准备数据、绘制图表及添加误差线等步骤,帮助用户根据需求进行调整与定制。
|
8月前
|
Python
matplotlib绘制动态瀑布图
matplotlib绘制动态瀑布图
|
算法 数据可视化 C#
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
本文将介绍一种计算折线对应的平滑曲线坐标点的算法。该算法使用Chaikin曲线平滑处理的方法,通过控制张力因子和迭代次数来调整曲线的平滑程度和精度。通过对原始点集合进行切割和插值操作,得到平滑的曲线坐标点集合。实验结果表明,该算法能够有效地平滑折线,并且具有较高的精度和可控性。
325 0
C# | Chaikin算法 —— 计算折线对应的平滑曲线坐标点
|
C++ Python
Python绘制比例直方柱状比重图
Python绘制比例直方柱状比重图
236 1
Python绘制比例直方柱状比重图
|
机器学习/深度学习 算法 数据可视化
R绘图案例|基于分面的面积图绘制
R绘图案例|基于分面的面积图绘制
10877 0
|
数据可视化 JavaScript 前端开发
【视觉高级篇】26 # 如何绘制带宽度的曲线?
【视觉高级篇】26 # 如何绘制带宽度的曲线?
204 0
【视觉高级篇】26 # 如何绘制带宽度的曲线?
如何用两种不同的方法动态绘制饼状图
如何用两种不同的方法动态绘制饼状图
214 0
如何用两种不同的方法动态绘制饼状图
|
前端开发 JavaScript
使用SVG实现动态分布的圆环发散路径动画
使用SVG实现动态分布的圆环发散路径动画
296 0