r - xlim - dev.hold,dev.flush和調整窗口大小



r plot legend (1)

正如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)

輸出繼電器:

在R中,可以握住設備,繪製圖片,然後刷新設備以渲染圖形。 這對於具有數千個數據點,顏色梯度等的非常複雜的繪圖非常有用,因為在沒有保持的情況下,設備將在每次繪圖操作之後刷新。 它運作得很好。

但是,一旦繪圖到位,任何窗口操作(如調整大小)都會導致繪圖刷新 - 但是,這次沒有保持和刷新設備,而是逐個繪製繪圖元素並每次刷新顯示。 這非常煩人。

很明顯,我可以在調整窗口大小之前手動調用 dev.hold ,但這不是一個真正的解決方案。

有沒有辦法告訴R設備應該暫停進行大小調整等操作?





window-resize