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

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to