your programing

dev.hold, dev.flush 및 창 크기 조정

lovepro 2020. 12. 31. 23:08
반응형

dev.hold, dev.flush 및 창 크기 조정


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)

Ouput : 그림

참조 URL : https://stackoverflow.com/questions/42387436/dev-hold-dev-flush-and-resizing-windows

반응형