[R] .SavedPlots and replayPlot

Jean-Luc Dupouey dupouey at nancy.inra.fr
Thu Mar 5 00:42:32 CET 2015


I would like to redraw a plot from the .SavedPlots object (list), using 
R code (not arrows on the keyboard).

 > windows(record=TRUE)
 >
 > x=runif(100)
 > plot(x,col="blue")
 > hist(x,col="red")
 > plot(x,col="green")

 > #When I try to replay any of the recorded plots (here, the second 
one), I get the following error message:

 > .SavedPlots[2]
Error in replayPlot(x) : loading snapshot from a different session

But I am in the same session! A quick look at function replayPlot shows 
that it is because the plots recorded in .SavedPlot do not have any pid 
value, whereas they should have one, equal to the current session pid.

Thus, assignation of the current session pid to the pid attribute of the 
recorded plots works:

 > for (i in 1:.SavedPlots[[2]]) 
attr(.SavedPlots[[5]][[i]],"pid")=Sys.getpid()
 > #correctly gives the second plot:
 > .SavedPlots[2]

Is it the right way to replay a plot in an R script, using .SavedPlots? 
Is there a simpler or better way?

I would prefer not to use recordPlot, which works, but requires an 
additional line of code and a new variable for each created plot:

 > plot(x,col="blue")
 > plot1=recordPlot()
 >
 > hist(x,col="red")
 > plot2=recordPlot()
 >
 > plot(x,col="green")
 > plot3=recordPlot()
 >
 > replayPlot(plot2)

I use R version 3.1.2.

Thanks in advance,

Jean-Luc Dupouey

-- 
INRA
Forest Ecology and Ecophysiology Unit
F-54280 Champenoux
France



More information about the R-help mailing list