【问题标题】:Time/Date real time plot in RR中的时间/日期实时图
【发布时间】:2017-09-11 21:04:40
【问题描述】:

我想根据时间实时绘制一些数据。

我使用的代码与此非常相似,取自我在此处阅读的另一个答案:

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()

FOR(;;) df$DateTime[i] = df$DateTime[i] + X 秒
结束循环

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

【问题讨论】:

    标签: r plot ggplot2 rstudio real-time


    【解决方案1】:

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

    【讨论】:

    • 非常感谢您!有没有办法让我有时间显示为 HH:MM:SS?
    • 太棒了!谢谢:D
    • 需要很长时间执行的是axis.POSIXct而不是计算。
    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2014-11-20
    • 2020-12-19
    • 2023-03-25
    相关资源
    最近更新 更多