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)
}
我想根据时间实时绘制一些数据。
我使用的代码与此非常相似,摘自我在此处阅读的另一个答案:
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)
}