【发布时间】:2017-07-12 06:18:51
【问题描述】:
在 R 中,可以持有一个设备,绘制图片,然后刷新设备以渲染图形。这对于具有数千个数据点、颜色渐变等的非常复杂的绘图很有用,因为如果不保持,每次绘图操作后都会刷新设备。效果很好。
但是,一旦绘图就位,任何窗口操作(例如调整大小)都会导致绘图被刷新——但是,这一次没有按住和刷新设备,而是一个一个地绘制绘图元素并刷新每次显示。这非常烦人。
显然,我可以在调整窗口大小之前手动调用dev.hold,但这不是真正的解决方案。
有没有办法告诉 R 应该暂停设备以进行调整大小等操作?
【问题讨论】:
-
要禁止在调整大小时绘制,您可以使用
dev.control("inhibit"),但您不能保持/重绘/刷新它。我试过p <- recordPlot(),但replayPlot(p)(也不是grDevices:::restoreRecordedPlot)似乎不尊重dev.hold()。你的答案可能在the R source (mirrored by wch on github)。 -
谢谢,虽然这并不能解决我的问题,但这是迈向解决方案的一步。
-
也不是一个解决方案,但我倾向于在 rstudio 中绘制为 jpeg,因为那里的绘图窗口很小。我在 Windows 预览中保持 jpeg 打开并重复调用 jpeg 刷新它相当快。
-
出于这个原因,我还建议不要将 R 图形设备用于复杂的绘图,如果绘图过于复杂,最好使用 pdf 或 png 或 jpeg 等光栅格式。
标签: r device window-resize