I though I read this before - yes, it looks like a timing issue that has to do with OS X providing windows asynchronously, so the drawing space is not ready yet while R is already plotting so the plot is incomplete. R doesn't know that so it doesn't redraw unless you resize the plot or play the history (cmd-left/right) -- the fact that the history shows the full plot proves that this is not something on the R side (since the display list is complete), but rather the initial rendering doesn't have a window to draw into. I didn't find any API for Quartz to know when the window is actually ready. This only affects creating a new window and plotting into it before it's ready. Once the window is shown, everything works as expected - so you're probably better of using plot.new() first before you start creating the grobs.
Cheers, Simon On Apr 30, 2016, at 5:21 PM, Chris Black <blac...@igb.illinois.edu> wrote: > Hi, all. I’m getting some puzzling, intermittent plot failures that seem to > occur only when I’m in an interactive session, arranging plots with very > different drawing speeds, and only when Quartz needs to open a new window > before plotting. > > I posted a longer version of this at > https://gist.github.com/infotroph/c68fc7a3f8594473361f87e2a348ddf9, but > here’s a minimal example: > > set.seed(34565) > library(ggplot2) > library(gridExtra) > library(grid) > > p1 = ggplot(diamonds, aes(x, price))+geom_point() > p2 = ggplot(mtcars, aes(wt, mpg))+geom_point() > > graphics.off() > pp=arrangeGrob(p1, p2) > grid.draw(pp) > > Expected result: New graphics window containing a two-panel plot with > diamonds on the top and cars on the bottom. > Observed result: Usually (~80% of the time?), a new graphics window with the > top panel incompletely drawn (usually just axes with no points or panel > grid), and the bottom panel as expected. Rarely (~20%?), the complete plot as > expected. > > I can modulate the success rate somewhat by putting different lengths of > Sys.sleep() in between the arrangeGrob and grid.draw calls, and I can > guarantee success by calling dev.new() before arrangeGrob. See the > above-linked Gist for details and for session info from a few other folks — > thus far only the Quartz users can reproduce it, hence my starting with this > list. > > Session info: > > R for 3.2.4 GUI 1.67 Mavericks build (7152) > R version 3.2.4 (2016-03-10) > Platform: x86_64-apple-darwin13.4.0 (64-bit) > Running under: OS X 10.11.3 (El Capitan) > > locale: > [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 > > attached base packages: > [1] grid stats graphics grDevices utils datasets methods > [8] base > > other attached packages: > [1] gridExtra_2.2.1 ggplot2_2.1.0 > > loaded via a namespace (and not attached): > [1] labeling_0.3 colorspace_1.2-6 scales_0.4.0 plyr_1.8.3 > [5] tools_3.2.4 gtable_0.2.0 Rcpp_0.12.4 munsell_0.4.3 > _______________________________________________ > R-SIG-Mac mailing list > R-SIG-Mac@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-sig-mac _______________________________________________ R-SIG-Mac mailing list R-SIG-Mac@r-project.org https://stat.ethz.ch/mailman/listinfo/r-sig-mac