3

画面上のマウスの動きからX座標とY座標を記録しています。位置が記録された時刻もあります。これらをプロットして、マウスが時間の経過とともにどのように動いたかを示したいと思います。

これが私のデータフレームがどのように見えるかのスニペットです:

      X   Y          Time
1   812 257 1339892810683
2   793 275 1339892810709
3   783 284 1339892810732
4   746 308 1339892810771

これを正確に表現する方法は、3Dプロット、または基本的に再生を表現するアニメーションの2つだけだと思います。誰かがRでこれを行う方法を知っていますか?または、これを視覚化する方法に関する他のアイデアはありますか?

4

5 に答える 5

5

3D プロットには、rglライブラリをお勧めします。

install.packages("rgl") # if you don't have it
library(rgl)
plot3d(yourData$X,yourData$Y,yourData$Time)

これで散布図が得られますが、時間を表す線を引くこともできるはずだと思います。マウスをドラッグすることで、視点を変更できるのが便利な機能の 1 つです。

于 2012-10-01T18:19:23.840 に答える
4

アニメーションを行いたい場合は、アニメーション パッケージ、またはtkexampTeachingDemos パッケージの関数を使用して作成された GUI のアニメーション コントロールがあります。color.scale.linesplotrix パッケージを使用して、最後の数点を色のグラデーションでプロットすることにより、アニメーションを強化できます。

以下に例を示します。

library(TeachingDemos)
library(plotrix)

tmpfun <- function(start,numpoints=10) {
    plot(ccc$Lon,ccc$Lat, xlab='Longitute', ylab='Lattitude', type='n')
    to <- min(nrow(ccc), start+numpoints)
    color.scale.lines( ccc$Lon[start:to], ccc$Lat[start:to], 
        c(0.7,0), c(0.7,0), c(0.7,0), colvar=seq_len(numpoints) )
}

tmplist <- list( numpoints=list('spinbox', init=10, from=1, to=nrow(ccc)),
                 start=list('animate',init=1, from=1, to=nrow(ccc)) )

tkexamp( tmpfun, tmplist )

時間を考慮した 2 番目の例を次に示します。

tmpfun2 <- function(start, dur=120) {
    time <- as.numeric(h2h$Time3)
    fr <- which( time >= start )[1]
    if( is.na(fr) ) fr <- nrow(h2h)-1
    to <- which( time >= start+dur )[1]
    if( is.na(to) ) to <- nrow(h2h)
    plot(h2h$Lon, h2h$Lat, xlab='Longitute', ylab='Lattitude',
     type='n', main=paste('Times',time[fr],'to',time[to]) )
    color.scale.lines( h2h$Lon[fr:to], h2h$Lat[fr:to], 
        c(0.7,0), c(0.7,0), c(0.7,0), colvar=time[fr:to])
}

tmplist2 <- list( dur=list('spinbox', init=120, from=10, to=1200),
                start=list('animate',init=0, from=0, to=1780, delay=100,
                            resolution=10) )

tkexamp( tmpfun2, tmplist2 )

どちらの例でも色をいじってみると、より意味のある色のグラデーションが得られる場合があります。

于 2012-10-01T19:43:34.217 に答える
3

各時間インスタンスからプロットを作成し、プロットを gif ファイルに保存し、gifsicleなどのアプリケーションを使用してすべてのインスタンス/プロットからアニメーションを作成できます。

于 2012-10-01T18:15:41.690 に答える
3

Ben Bolker の提案に従って、googleVis も調べました。おそらく最低の作業です。モーション チャート API の要件を満たすために、「エンティティ」列を追加する必要がありました。

df$Entity = rep("Mouse", nrow(df))
library(googleVis)
M <- gvisMotionChart(df, "Entity", "Time",
                 options=list(width=400, height=360))
plot(M)

Time 列を整数のままにしても、コードは問題なく動作しました。実際の時間オブジェクトに対応する必要はありません。唯一の欠点は、コードがブラウザーで実行され、(明らかに) 保存する簡単な方法がないことです。

于 2012-10-01T22:57:01.570 に答える
0

@ジム、プラグインで申し訳ありませんが、まだ答えを探しているなら、私が開発したアプリはまさにその目的のために設計されました. これはpopchartsと呼ばれ、Mac 専用です。これは無料のアプリではありませんが、Web サイトを見てみましょう。多くのデモチュートリアルが利用可能です。ただし、基本的に、ファイルが質問のように構造化されている場合、データをアニメーション化してビデオにエクスポートするのに数分もかからないはずです. したがって、Rでこれを行う方法がわからない場合がありますが、これにより仕事がすばやく完了します。

于 2014-07-03T15:00:59.500 に答える