[R] Save generic plot to file (before rendering to device)

David Winsemius dwinsemius at comcast.net
Mon Jul 11 20:15:19 CEST 2011


On Jul 11, 2011, at 12:08 PM, jeroen00ms wrote:

> I am looking for a way to save a plot (graphics contents) to a file  
> after the
> plot has been calculated but before it has been rendered. More  
> specifically,
> assume that I made a plot that took a very long time to produce, I  
> would
> like to save this plot to a generic file that I can later, on a  
> different
> machine, render to either PDF, PNG, SVG using the usual R graphics  
> devices,
> without recalculating the graphical contents.
>
> As a toy example, suppose this is my plot function:
>
> testplot <- function(){
>  Sys.sleep(10); #very long and complicated procedure
>  plot(cars);
> }

 > ?Devices
 > ?capabilities
 > capabilities()
     jpeg      png     tiff    tcltk      X11     aqua http/ftp  sockets
     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE
   libxml     fifo   cledit    iconv      NLS  profmem    cairo
     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE

I have all of the requested capabilities (and more.)

>
> So the use case is that after running testplot() which took  
> potentially 30
> days to calculate,

Unfortunately you basically threw away all of the intermediate steps  
by plot()-ting at the very end, since that function returns NULL. If  
you had plotted first and then executed return(data_object) and then  
did no operations, you would be able to capture the last calculation  
with:

data_object <- .Last.value

Plotting with lattice or ggplot may leave a plot object in the  
workspace. If done within a function you will need to return it so it  
doesn't disappear.

> I would like to send a file to my colleagues that they
> can load in R and send to their png or pdf or svg devices just as if  
> they
> would have made the plot themselves, without having to re-run the  
> code.

You can also save a data (or function) object to an .Rdata file with  
save(objname, file="filename.Rdata")  and your colleagues could then  
load("filename.Rdata") in R.

>
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Save-generic-plot-to-file-before-rendering-to-device-tp3659999p3659999.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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.

David Winsemius, MD
West Hartford, CT



More information about the R-help mailing list