Time/Date R 中的实时绘图

Time/Date real time plot in 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)
}

我想在图表的 x 轴上绘制时间。所以我这样做了:

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[i] = df$DateTime[i] + X 秒
循环结束

对于(;;) //// 模拟实时绘图? 循环结束

要绘制时间,您需要一个时间对象。我稍微修改了您的代码以实际拥有一个时间向量。另外,我更改了索引向量的方式以摆脱 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)
}

编辑 添加小时数的解决方案。您可以增加时间,但这似乎会减慢流程。如您所见,我添加了 axis.POSIXct 调用,但我不得不将 Sys.Sleep 减慢到 0.5,您几乎看不到 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)
}