【问题标题】:Real-time auto incrementing ggplot in RR中的实时自动递增ggplot
【发布时间】:2014-11-29 18:38:21
【问题描述】:

This thread 回答如何在 R 中创建具有实时效果的增量图。

我想用ggplot2而不是R的基础plot做同样的事情。直接从该链接中的答案复制,我尝试了这个,但它没有用:

n=1000
df=data.frame(time=1:n,y=runif(n))
window=100
for(i in 1:(n-window)) {
  print(i)
  flush.console()
  ggplot(df) + geom_line(aes(x=time, y=y), size=0.7) + xlim(i,i+window)
  Sys.sleep(.09)
}

我猜ggplot2 的图像渲染效果不同。是否可以用ggplot2创建实时更新效果?

理想情况下,我希望能够显示多个geom_lines。但我猜逻辑是一样的。

另外,当情节在 R-Studio 中“放大”时,是否有可能实现这一点?

【问题讨论】:

  • 将整个ggplot(...)+...+... 行包含在print(...) 中,如print(ggplot(df)+...) 中一样
  • @jlhoward,谢谢。它确实一个接一个地显示图,但这更多地导致“闪烁效果”而不是视觉上的连续流动。如果我减少 Sys.sleep 以获得更无缝的效果(例如使用 0.01),则不会绘制任何内容。

标签: r plot ggplot2


【解决方案1】:

目前尚不清楚您将如何处理,但此代码将生成一个流畅呈现的 HTML 动画。不过创建动画需要一段时间(大约一分钟)。

library(animation)
library(ggplot2)
# your data
n  <- 1000
df <- data.frame(time=1:n,y=runif(n))
window <- 100
# create the animation
saveHTML({
for(i in 1:(n-window)) {
  print(ggplot(df) + geom_line(aes(x=time, y=y), size=0.7) + xlim(i,i+window))
}
})

【讨论】:

  • 谢谢,我正在看这个以可视化交易策略测试。
  • 今天偶然发现了这个。知道如何控制生成图像的宽度/高度吗?
  • 但这不是实时的
猜你喜欢
  • 2012-07-07
  • 2012-01-09
  • 2019-01-27
  • 2020-01-15
  • 2016-11-22
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多