4

私は、800 人の被験者の約 150,000 件の観測を含む一連のデータを持っています。各観測には、被験者 ID、緯度、経度、および被験者がそれらの座標にいた時間があります。データは 24 時間の期間をカバーしています。

すべてのデータを一度にプロットすると、ブロブが得られます。被験者のパスを時間の関数として観察できるように、このデータをアニメーション化する方法についてのヒントを教えてくれる人はいますか?

時空のビネットを読んだことがありますが、それが私が望むことをするかどうかは完全にはわかりません. この時点で、私はグーグル検索に多くの時間を費やしていますが、実際には私のニーズを満たすものは何も思いつきません.

ヒントや指針をいただければ幸いです。

4

2 に答える 2

3

ここで初めてanimationパッケージを使用します。思ったより簡単で、特にsaveHTMLは本当に素晴らしいです。ここで私のシナリオ(Rコードがより明確になると思います:)

  1. 私はいくつかのデータを生成します
  2. 背景プロットとして、すべての人物の基本プロットをプロットします。
  3. 各人の現在位置と次の位置の間に矢印をプロットできるように、データを変形してワイド フォーマットにします。
  4. 多くのプロットを生成するために、時間にわたってループします。llop を強力なsaveHTML機能の中に入れました。
  5. 素敵なアニメーションを含む html ファイルを取得します。ここに 1 つの中間プロットを示します。

ここに画像の説明を入力

ここに私のコード:

library(animation)
library(ggplot2)      
library(grid)
## creating some data of hours 
N.hour <- 24
dat <- data.frame(person=rep(paste0('p',1:3),N.hour),
                  lat=sample(1:10,3*N.hour,rep=TRUE),
                  long=sample(1:10,3*N.hour,rep=TRUE),
                  time=rep(1:N.hour,each=3))


# the base plot with
base <- ggplot() + 
  geom_point(data=dat,aes(x=lat, y=long,colour = person),
             size=5)+ theme(legend.position = "none") 


## reshape data to lat and long formats

library(plyr)
dat.segs <- ddply(dat,.(person),function(x){
  dd <- do.call(rbind,
           lapply(seq(N.hour-1),
              function(y)c(y,x[x$time %in% c(y,y+1),]$lat,
                   x[x$time %in% c(y,y+1),]$long)))
  dd

})
colnames(dat.segs) <- c('person','path','x1','x2','y1','y2')

# a function to create the animation
oopt <- ani.options(interval = 0.5)
saveHTML({
  print(base)
  interval = ani.options("interval")
  for(hour in  seq(N.hour-1)){
    # a segment for each time
    tn <- geom_segment(aes(x= x1, y= y1, xend = x2,
                        yend = y2,colour = person), 
                       arrow = arrow(), inherit.aes = FALSE,
                       data =subset(dat.segs,path==hour))

    print(base <- base + tn)
    ani.pause()
  }
}, img.name = "plots", imgdir = "plots_dir", 
   htmlfile = "random.html", autobrowse = FALSE, 
    title = "Demo of animated lat/long for different persons",
    outdir=getwd())
于 2013-06-19T11:37:42.423 に答える