R语言如何为ggmap和动画包绘制的多个图像制作动画地图

时间:2014-06-17 13:01:10

标签: r animation data-visualization ggmap

我有一个.csv文件的设备位置,列有“Date”,“time”,“lat”,“lon”,“radius”, “position_method”。我想在Google地图上绘制点数据并制作动画以反映每小时的点数变化。

我使用了强大的动画包(http://cran.r-project.org/web/packages/animation/animation.pdf。)和一个演示(http://xccds1977.blogspot.fi/2012/06/ggmap.html)。

代码如下:

all <- read.csv("C:/probes/2014-04-07.csv",header=T)

#convert the time format to standard hour-min-sec format
th < -strptime(all$time,"%H:%M:%OS")

#select the hour part of time
byhour <- th$h

#plot map by hours 
plotfunc <- function(x) {
  df <- subset(all,byhour <= x)

  p <- ggmap(get_googlemap (center = 'Tampere', zoom=10,maptype = 'terrain'),,extent='device')+
    geom_point(data = df,aes(x = lon, y = lat),colour = 'red',alpha=0.7)
}

#get the hours of probes
time <- sort(unique (byhour))

#generate and save the animation in HTML
saveHTML({ 
           for( i in time) print (plotfunc(i))
           ani.options(interval = 0.5)

          }, 
img.name = "probes_hour_plot", title = "Visualization of probes from Pirkanmmaa changing by time in a day",
description=c("the numbers of devices receiveing from 12am")
)

通过循环for( i in time) print(plotfunc(i)我得到了一个动画,但是它覆盖旧点上的新点,所以点数在增加。它无法反映分布的变化。你知道如何让动画一个接一个地显示每个小时的点数而不是任何叠加和积累吗?只有我需要的才是制作组合独立图像的动画。

我得到的动画就像启晓的演示中的gif,但它不是我想要的。

1 个答案:

答案 0 :(得分:2)

问题不在于动画程序,它只是用于绘制数据的功能,现在你正在做

df <- subset(all,byhour <= x)

随着x的增加而选择越来越多的数据。尝试

df <- subset(all,byhours>=x-1 & byhour<= x)

而是使用更多滚动窗口而不是累积子集。