在r中动画ggmap

时间:2013-11-06 16:23:17

标签: r animation ggmap

我有一个长坐标和纬度坐标的数据集。到现在为止,我可以使用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'包含每个点的时间和日期等数据。所以,我尝试使用'animation'包来获取我的模拟的。* 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)

我使用了此website中的示例。

有人可以提示吗?

提前致谢!

1 个答案:

答案 0 :(得分: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)

enter image description here