r device window-resize

dev.hold, dev.flush y redimensionar ventanas



device window-resize (1)

Como lo indica Dan Slone y la opción viable de gdkrmr es usar un archivo de trama intermedio para trazar gráficos complejos.

El flujo es el siguiente:

  1. Guardar trazado en archivo png .
  2. Trace la imagen en el dispositivo de pantalla.

Después de esto, no habrá problemas con la actualización y el cambio de tamaño.

Por favor vea el código a continuación:

# 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:

En R, es posible sostener un dispositivo, dibujar la imagen y luego enjuagar el dispositivo para representar los gráficos. Esto es útil para gráficos muy complejos con miles de puntos de datos, gradientes de color, etc., ya que sin mantenerlo, el dispositivo se actualizará después de cada operación de trazado. Funciona bastante bien

Sin embargo, una vez que la trama esté en su lugar, cualquier operación de ventana, como un cambio de tamaño, hará que la trama se actualice; sin embargo, esta vez sin mantener y enjuagar el dispositivo, sino trazando los elementos de la trama uno por uno y actualizando la pantalla cada vez . Esto es extremadamente molesto.

Claramente, podría llamar manualmente a dev.hold antes de cambiar el tamaño de la ventana, pero esta no es una solución real.

¿Hay alguna manera de decirle a R que el dispositivo debe quedar en espera para operaciones como cambiar el tamaño?