3

我有一个带有经纬度坐标的数据集。到目前为止,我可以使用 ggmap 和 geom_path 可视化地图上的轨迹。这工作正常。现在我正在尝试为轨道设置动画,以便每 10 秒用路径的彩色部分填充轨道。所以,这是一种对轨道的模拟。我检查了动画包,但我得到一个空的 gif 文件。另外,我尝试了 Sys.sleep() 函数,但它已经显示了整个轨道。以下是坐标的示例数据集“temp”:

    10.16530167 54.32216667
    10.16530167 54.32216667
    10.16529833 54.32216833
    10.165295   54.32217
    10.16529333 54.32217167
    10.16529167 54.32217167
    10.16529167 54.32217167
    10.16529333 54.32217167
    10.165295   54.32217
    10.165295   54.32217
    10.165295   54.32217167
    10.16529333 54.32217
    10.16528833 54.32217
    10.16527833 54.32216667
    10.16527167 54.32216
    10.165265   54.32215667

因此,通过以下代码,我可以可视化轨道。这工作正常:

    require(ggmap) 
    require(mapproj)
    ggmap(m)+geom_path(data=track_df, aes(x=temp$GPS_x,                  
    y=temp$GPS_y),colour="red",size=1,lineend="round")

“track_df”包含每个点的时间和日期等数据。因此,我尝试使用“动画”包获取模拟的 .*gif,但在运行代码后,“ImageMagic”或“GraphicsMagic”显示输出文件,它只是白屏,没有任何动画或图像. 我正在执行的代码如下:

   require(animation)
   npoints<- length(temp$GPS_x)
   simulate <- function(){
   for(i in 1:npoints){
   ggmap(m)+geom_path(data=ricky_df, aes(x=temp$GPS_x[i],  
   y=temp$GPS_y[i]),colour="red",size=1,lineend="round")
   }
   }
   oopt = ani.options(interval = 1, nmax = npoints)  
   saveMovie(simulate(),interval = 0.1, width = 580, height = 400)

我使用了这个网站上的例子。

有人可以给个提示吗?

提前致谢!

4

1 回答 1

3

您必须打印 ggplot 对象。这是您的数据的示例:

    pts <- read.table(text = '10.16530167 54.32216667
    10.16530167 54.32216667
    10.16529833 54.32216833
    10.165295   54.32217
    10.16529333 54.32217167
    10.16529167 54.32217167
    10.16529167 54.32217167
    10.16529333 54.32217167
    10.165295   54.32217
    10.165295   54.32217
    10.165295   54.32217167
    10.16529333 54.32217
    10.16528833 54.32217
    10.16527833 54.32216667
    10.16527167 54.32216
    10.165265   54.32215667')
names(pts) <- c('x', 'y')


require(ggplot2)
require(animation)

npoints<- nrow(pts)

plotfoo <- function(){
  for(i in 1:npoints){
    take_df <- pts[1:i, ]
    p <- ggplot() +
      geom_path(data = take_df, aes(x = x, y = y)) +
      xlim(c(min(pts$x), max(pts$x))) +
      ylim(c(min(pts$y), max(pts$y)))
    print(p)
  }
}

oopt = ani.options(interval = 1, nmax = npoints)  
saveMovie(plotfoo(),interval = 0.1, width = 580, height = 400)

在此处输入图像描述

于 2013-11-06T18:20:12.117 回答