制作一个时间序列图表,用R中的数据进行滚动

时间:2017-07-06 19:31:57

标签: r scroll time-series rstudio

我需要完成此页面上的图表(第二个) http://www.animatedgraphs.co.uk/line.html

这是我的实际代码:

timemax<-151737 # number of frames (and observations - so no interpolation needed)
setwd("C:/Users/victo/Downloads/ffmpeg/ffmpeg/bin/")
vis<-100 # how many time points are on the screen at one time
gdata<-data.frame('Temps'= data$time,'RH_Xacc'= data$RH_Xacc)

gname<-paste("g",1:timemax,".tif", sep="") # holds the names of the picture files
right<-(((1:timemax)<=vis)*100)+(((1:timemax)>vis)*1:timemax) # rightmost time on screen
left<- right-vis+2 # leftmost time on screen
leftlab<-200*ceiling((left-1)/200) # leftmost x label
rightlab<-200*floor(right/200) # rightmost x label

# draw graphs
for (i in 1:timemax) {
tiff(gname[i],width=480)
plot(gdata$Temps[right[i]:left[i]],gdata$RH_Xacc[right[i]:left[i]],col="red",type="l",ylim=c(-100,200),xlim=c(right[i],left[i]),xaxt="n",ylab="",xlab="time")
axis(1,at=seq(from=rightlab[i],to=leftlab[i],by=12))
lines(gdata$Temps[right[i]:i],gdata$RH_Xacc[right[i]:i])
dev.off(dev.cur())
}

 # call FFMPEG and make the video
 shell("C:/Users/victo/Downloads/ffmpeg/ffmpeg/bin/ffmpeg.exe -codecs -i g%d.tif -b:v 2048k gdata.mpg",mustWork=FALSE)

我的代码似乎一直有效,直到shell函数。我没有收到错误。代码永远不会停止运行。我无法获得包含所有数据的视频。谁能告诉我问题出在哪里?如何获取视频或是否有其他人获得相同的结果?我已经尝试了图书馆gganimate,但我也没有成功......我在Rstudio中使用sweave进行此操作。

非常感谢

1 个答案:

答案 0 :(得分:1)

实际上,你应该做的第一件事可能是运行命令: C:/Users/victo/Downloads/ffmpeg/ffmpeg/bin/ffmpeg.exe -codecs -i g%d.tif -b:v 2048k gdata.mpg直接而不是来自RStudio的调用shell。你会有更详细的输出。

原帖

您是否有任何CPU性能分析工具?我怀疑shell命令可能需要花费大量时间才能在您的计算机上运行,​​因为在您的示例中:timemax<-151737而示例的时间缩短时间timemax<-1000

尝试使用低timemax (=1000)值的程序,并执行代码。我想你可以推断执行所需的总时间乘以150(我不是ffmpeg的专家,实际上可能更长)