R:推迟plot()输出,直到添加所有行为止?

R:推迟plot()输出,直到添加所有行为止?,r,R,我有两个绘制并实时更新的绘图,如下所示: 我使用标准函数plot()和lines()生成了这些绘图。 由于我实时生成并重新生成这些绘图,因此需要进行大量的重新绘制和闪烁 是否可以暂停输出到显示器,直到两个绘图完成?(也就是说,直到两行都添加了?您可以尝试使用dev.hold和dev.flush plot(NA, xlim=c(0,1), ylim=c(0,1), type="n") dev.hold() for(i in 1:1e4) { lines( runif(2), runif(2)

我有两个绘制并实时更新的绘图,如下所示:

我使用标准函数
plot()
lines()
生成了这些绘图。 由于我实时生成并重新生成这些绘图,因此需要进行大量的重新绘制和闪烁


是否可以暂停输出到显示器,直到两个绘图完成?(也就是说,直到两行都添加了?

您可以尝试使用
dev.hold
dev.flush

plot(NA, xlim=c(0,1), ylim=c(0,1), type="n")
dev.hold()
for(i in 1:1e4) {
  lines( runif(2), runif(2) )
}
dev.flush()

这不是它们看起来像什么,而是你如何建造它们。我不知道您为什么会在意,但您可以查看
lattice
包中的
xyplot
,它允许您在一次调用中指定所有数据集。但是,“重新绘制和闪烁”更像是计算机CPU和显示驱动程序速度的函数,而不是您在R中所做的任何操作。该软件包可能也很有趣。这是一个很好的问题,而且,如果它还推迟轴的自动校准,它将等待所有数据,然后只执行自动校准过程,那将是一件好事!很不错的!但是,如果它也推迟轴的自动缩放(xlim,ylim),那么它将等待所有数据,然后只执行自动缩放过程,这将是一件好事!手动指定xlim、ylim很烦人,甚至使用
范围
。我讨厌它。@Tomas:首先,由于对
行的每次调用都是独立于其他行的,所以自动缩放在物理上是不可能的。一旦
完成,图形窗口就会“忘记”输入,因此无法将以前的数据与新数据进行比较。一个相对简单的解决方法是创建变量
xrng@CarlWitthoft,使用
range
这个解决方法要简单得多,正如我写的(比如
xlim=range(data1$x,data2$x,…)
),但正如我说的,我不喜欢这样做。R应该能够为我做到这一点,记住所有的比例,最后自动缩放和绘图。这就是设计良好的绘图库的工作原理。点。@Tomas:自动缩放是可能的:只需使用
ggplot2
。你也不必再担心闪烁:绘图只在最后显示,或者当你显式打印它时才显示。谢谢Vincent,我想这些库可以做到!然而,我更喜欢使用基本库——如果有解决方案,我会很高兴。