R:动态更新图表


9

这是一个数据可视化问题。我有一个数据库,其中包含一些不断修改的数据(在线更新)。R中每隔5或10秒更新图表的最佳方法是什么?(无需再次绘制所有内容就可以了)?

Answers:


7

假设您要更新R windows()x11()图形,可以使用points()和之类的函数lines()来在图形上添加新点或扩展线而无需重绘;但是请注意,这不会更改轴范围以适应可能看不到的点。通常,通常使绘图本身是瞬时的,这是一个好主意-例如通过将计算工作转移到做出一些可以快速绘制的缩小的中间表示上,例如密度图而不是大量的点或降低线图的分辨率(这可能很复杂)。

要在不忙于等待的情况下保持R会话一段时间,请使用Sys.sleep()


(+1)我忘了Sys.sleep()功能。我觉得X-和 ÿ轴范围应该预先设置,不是吗?
chl

@chl,是的 Xÿ轴范围应事先设置。
mpiktas 2011年

1
@mpiktas或者只是初始化的情节与对单个呼叫plot(),可能与0,0,type="n"是否有什么阴谋......但事实上,这是比丁更容易plot.new()和添加都喜欢通过手斧或标签的东西。

的确,这似乎是最简单的方法,但是很糟糕,无法更新轴。当我想在线更新一个时间序列时,我知道x轴以什么速度移动,我想我可以每n次更新重新绘制所有内容。
RockScience 2011年

8

对于离线可视化,您可以生成PNG文件,并使用ImageMagick将其转换为动画GIF 。我将其用于演示(尽管这会重绘所有数据):

source(url("http://aliquote.org/pub/spin_plot.R"))
dd <- replicate(3, rnorm(100))
spin.plot(dd)

这会生成几个以开头的PNG文件fig。然后,在un * x外壳上,

convert -delay 20 -loop 0 fig*.png sequence.gif

给出此动画(这是使用S-Plus的现代应用生物统计学方法的启发,S。Selvin,1998年):

替代文字

看起来更有希望的另一个选择是依赖动画包。有一个带有移动窗口自动回归的示例,应该让您开始。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.