2017-04-15 16 views
1

時間に対してリアルタイムでいくつかのデータをプロットしたいと思います。私は、グラフのX軸に時間をプロットしたい時間/日付リアルタイムプロットR

n=1000 
df=data.frame(time=1:n,y=runif(n)) 
window=100 
for(i in 1:(n-window)) 
{ 
    flush.console() 
    plot(df$time,df$y,type='l',xlim=c(i,i+window)) 
    Sys.sleep(0.1) 
} 

私が使用していたコードは、私がここに読んで別の答えから取られ、これと非常によく似ています。私は

多くのおかげで、

ベン

EDIT

n=1000 
df=data.frame(time=0,y=runif(n)) 
window=100 
for(i in 1:(n-window)) 
{ 

    **df$time[i] <- format(Sys.time(),"%X")** 

    flush.console() 
    plot(df$time,df$y,type='l',xlim=c(i,i+window)) 
    Sys.sleep(0.1) 
} 

しかし、私はエラーを取得し、あなたのいずれかが任意のヘルプ/アドバイスを持っています。だから私はこれをしませんでした設定された頻度でこれを900回実行します。 forループの前に時間値を計算できますか?例えば

DF $ DateTimeの[1] = Sys.time()

(;;) DF $のDateTime FOR LOOP

FOR [I] = DF $のDateTime [i]が+ X秒
END

FOR(;;) ////ライブプロットをシミュレートしますか? ループ終了

答えて

2

時間をプロットするには、時間オブジェクトが必要です。私はあなたのコードを実際に時間ベクトルを持つために少し変更しました。また、ベクトルをインデックス化してxlimを取り除く方法を変更します。

n=1000 
df=data.frame(time=Sys.time()+1:n,y=runif(n)) 
window=100 
for(i in 1:(n-window)) 
{ 
    flush.console() 
    df1 <-df[i:(i+window),] 
    plot(df1$time,df1$y,type='l') 
    Sys.sleep(0.1) 
} 

EDITソリューションは、時間を追加します。時間を追加することはできますが、プロセスが遅くなるようです。あなたが見ることができるように、私はaxis.POSIXct呼び出しを追加しましたが、私は0.5にSys.Sleepを遅くしなければならなかった、あなたはかろうじてx軸を見ることができます:

n=1000 
df=data.frame(time=Sys.time()+1:n,y=runif(n)) 
window=100 
for(i in 1:(n-window)) 
{ 
    flush.console() 
    df1 <-df[i:(i+window),] 
    x_at <-pretty(df1$time) 
    x_labels <-format(pretty(df1$time),"%H:%M:%S") 
    plot(df1$time,df1$y,type='l',xaxt='n') 
    axis.POSIXct(side=1,at=x_at,labels=x_labels) 
    Sys.sleep(0.5) 
} 
+0

恐ろしいそんなに今までありがとうございました! HH:MM:SSとして表示する時間を得る方法はありますか? –

+0

@BenjaminBusby私の編集を参照してください。 –

+0

素晴らしい!ありがとうございました:D –