保存时,小ggplot对象(1 mb)变为7千兆字节.Rdata对象

时间:2015-08-24 21:48:21

标签: r ggplot2 save

我有一系列ggplot对象,我试图保存到.rdata文件以便稍后加载到Markdown文档中。 ggplot对象本身很小(几KB)。但是,当我尝试将对象保存为.rdata文件以供以后检索时,生成的.rdata文件现在超过8千兆字节。我已经尝试直接从GUI保存绘图,保存为.rds ...保存为.pdf或其他图像会产生几KB的正常图像。

我很难过,还有其他人遇到过这个问题吗?

下面的示例工作流程,我无法提供可重现的问题代码,因为我无法上传制作此图所需的数据帧

mcmsy<- (ggplot(data = subset(MonteCarlo, Policy == 'RBFM' & 
Year == BaselineYear), aes(MSY), alpha = 0.8) + geom_density(fill = 'steelblue2'))

object.size(mcmsy)

save(mcmsy, file = 'mcmsy_plot.rdata')

1 个答案:

答案 0 :(得分:1)

我偶然发现了这个问题。这确实与环境有关。如果要将绘图保存为Rdata文件,则应在生成绘图的函数内创建新环境,以便不保存完整的环境。例如:

makePlot <- function(plot.data){
  env <- new.env(parent = globalenv())
  env$subset <- subset 

  my.plot <- with(env, {
    my.plot <- ggplot(plot.data, ...) 
    return(my.plot)
  })

  return(my.plot)
}