gpt4 book ai didi

r - dev.hold、dev.flush 和调整窗口大小

转载 作者:行者123 更新时间:2023-12-03 05:50:31 28 4
gpt4 key购买 nike

在 R 中,可以握住设备,绘制图片,然后刷新设备来渲染图形。这对于具有数千个数据点、颜色渐变等的非常复杂的绘图非常有用,因为如果不保持,设备将在每次绘图操作后刷新。效果非常好。

但是,一旦绘图就位,任何窗口操作(例如调整大小)都会导致绘图刷新 - 不过,这一次不是按住并刷新设备,而是逐一绘制绘图元素并刷新绘图每次都显示。这非常烦人。

显然,我可以在调整窗口大小之前手动调用 dev.hold,但这不是真正的解决方案。

有没有办法告诉 R 应该暂停设备以进行调整大小等操作?

最佳答案

正如 Dan Slone 和 gdkrmr 所指出的,可行的选择是使用中间光栅文件来绘制复杂图形。

流程如下:

  1. 将绘图保存到 png 文件。
  2. 将图像绘制到屏幕设备中。

此后刷新和调整大小就不会出现问题。

请参阅下面的代码:

# plotting through png
plot.png <- function(x, y) {
require(png)
tmp <- tempfile()
png(tmp, width = 1920, height = 1080)
plot(x, y, type = "l")
dev.off()
ima <- readPNG(tmp)
op <- par(mar = rep(0, 4))
plot(NULL, xlim = c(0, 100), ylim = c(0, 100), xaxs = "i", yaxs = "i")
rasterImage(ima, 0, 0, 100, 100, interpolate = TRUE)
par(op)
unlink(tmp)
}

t <- 1:1e3
x <- t * sin(t)
y <- t * cos(t)


# without buffering
# plot(x, y, type = "l")

# with buffering in high-res PNG-file
plot.png(x, y)

输出: picture

关于r - dev.hold、dev.flush 和调整窗口大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42387436/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com