[R] RecordPlot

Paul Murrell p.murrell at auckland.ac.nz
Tue Nov 30 20:42:34 CET 2004


Hi

The main problem here is that you really shouldn't be poking around 
inside a "recordedplot" object.  From the help page:

WARNING:

      The format of recorded plots may change between R versions.
      Recorded plots should *not* be used as a permanent storage format
      for R plots.

      R will always attempt to replay a recorded plot, but if the plot
      was  recorded with a different R version then bad things may
      happen.

This could (should) be more explicit.  In particular, it might be worth 
adding a comment from the C source ...

  * The graphics engine assumes that it is getting a snapshot
  * that was created in THE CURRENT R SESSION

... [snapshot == recordedplot].  The basic message is:  don't rely on 
the internal structure of a recordedplot because we can (and have [and 
will]) change it at any time.

That leaves the problem of how to achieve your "zoom", but I'm not sure 
exactly what your zoom is doing (just modifying the axis ranges?). 
Could you (privately) send me screen shots of before and after the zoom? 
Then I can try to suggest a "correct" way to zoom.

Paul


Jean Coursol wrote:
> I want to do a zoom with recordPlot(). I have problems with lists.
> (R-2.0.1 patched 2004-11-30 , various linux). I have problems 
> with RecordPlot class structure.
> 
> 
>>plot(1:10)
>>saveP <- recordPlot()
>>dev.off()
> 
> 
>>sx <- saveP[[1]][[2]][[2]] 
>>saveP[[1]][[2]][[2]] <- sx 
> 
> Error in "[[<-"(`*tmp*`, 1, value = list(list(
> .Primitive("plot.new")), list(.Primitive("plot
> .window"), c(1,  : 
>         incompatible types
> 
> 
>>typeof(saveP[[1]][[2]][[2]])
> 
> [1] "double"
> 
>>typeof(sx)
> 
> [1] "double"
>         
> 
> But:
> 
> 
>>s1 <- saveP[[1]]
>>s1[[2]][[2]] <- c(4,6)
>>saveP[1] <- list(s1)
>>saveP                  # zoom is OK
> 
> 
> Also, I don't understand recursive indexing.
> With not modified saveP, 
> 
> 
>>saveP[[c(1,2)]]
> 
> [[1]]
> .Primitive("plot.window")
> 
> [[2]]
> [1]  1 10
> 
> [[3]]
> [1]  1 10
> 
> [[4]]
> [1] ""
> 
> [[5]]
> [1] NA
> 
> # OK
> 
> 
>>saveP[[c(1,2,2)]]
> 
> Error: recursive indexing failed at level 2  
> 
> # why not [1]  1 10 ??
> 
> Jean Coursol
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html


-- 
Dr Paul Murrell
Department of Statistics
The University of Auckland
Private Bag 92019
Auckland
New Zealand
64 9 3737599 x85392
paul at stat.auckland.ac.nz
http://www.stat.auckland.ac.nz/~paul/




More information about the R-help mailing list