Skip to content

savePlot(type="wmf") in loop fails, since too fast

2 messages · Christoph Lehmann, Dieter Menne

#
hi
working with R-2.1.1 on winxp, in a loop I draw to a trellis.device which
takes some time. After the drawing I call savePlot().
it seems, the loop is too fast for the savePlot() call to finish. Is there
any solution for such a problem? Calling the same steps outside the loop,
works fine.
many thanks

christoph 

--
#
Christoph Lehmann <christoph.lehmann <at> gmx.ch> writes:
I virtually see the computer being overrun by her/his/its own plotting 
function, all semaphores blinking like mad...

When in a loop, you must use print() to output the plot. Easy to forget, I 
remember that even Douglas Bates once was close to calling Deepayan who was far 
away in India one hour before the presentation.

library(lattice)
for (i in 1:10) {
  x = rnorm(10)
  y = rnorm(10)
  p = xyplot(x~y,main=paste("Plot",i))
  print(p)
  savePlot(paste("Plot",i, sep=""))
}

But as far I know, savePlot anyway is not the preferred methode to print 
trellis, is just just happens to work somehow. Here is my preferred method: 
print everything to a postscript file (nice one-file solution), and extract to 
emf-file with pstoedit/Ghostgum when you really need it.

trellis.device("postscript",file="Myplots.ps",color = T)
for (i in 1:10) {
  x = rnorm(10)
  y = rnorm(10)
  p = xyplot(x~y,main=paste("Plot",i))
  print(p)
}
dev.off()

Dieter