更大尺寸的ggsave png错误

Jam*_*mes 10 r ggplot2

我正在保存一个刻面的ggplot2图,它可以很好地保存在较小的尺寸,但是当我想要增加它时会失败.

> ggsave("tst.png",height=6.75,width=9)
# works fine

> ggsave("tst.png",height=9,width=12)
Error in grDevices::png(..., width = width, height = height, res = dpi,  : 
  unable to start device
In addition: Warning messages:
1: In grDevices::png(..., width = width, height = height, res = dpi,  :
  Unable to allocate bitmap
2: In grDevices::png(..., width = width, height = height, res = dpi,  :
  opening device failed
Run Code Online (Sandbox Code Playgroud)

我之前用ggsave保存了这个大小的png,为什么它不工作的任何想法?

可重复的例子:

library(car)
qplot(education,data=Vocab,geom="density",colour=sex)+facet_wrap(~year)
Run Code Online (Sandbox Code Playgroud)

Jor*_*eys 12

注意:在Windows 7 64位上使用R 2.12.1,此问题已消失.如果遇到此问题,请先尝试更新R版本.

在另一个问题再次出现问题之后,我在我的新系统上重新测试我的测试代码,看看错误是否已经消失了.


编辑:为什么底层代码可以工作的技巧是它使用的分辨率只有72 dpi而不是300dpi,这是ggsave()我认为的标准.

所以ggsave("tst.png",height=9,width=12,dpi=72)可以做到这一点.

但如果不能接受,你真的必须有一个疯狂的情节.据我所知,这个问题与显卡有关(来自教授里普利的这条消息).

如果分辨率是一个问题,你最好去像eps或pdf这样的矢量化格式.


编辑2:

显然,某个地方有一个涉及某种内存泄漏的错误?提供以下代码:

library(car)
library(ggplot2)
qplot(education,data=Vocab,geom="density",colour=sex)+facet_wrap(~year)
setwd("G:/Temp")
i<-1
while(1){
  tryCatch(ggsave("tst.png",height=9+i,width=12+i),error=function(e) {print(i);stop(e);})
  i <- i+1
}
Run Code Online (Sandbox Code Playgroud)

这对我来说很好,直到我达到9,然后我得到你得到的错误.每次下一次尝试运行代码时,再次启动i=1,都会产生相同的错误.尝试png()dev.off()再次给出相同的错误.似乎存在一些内存填满而没有被清空,有效地阻止了另一个png文件被保存.也对我来说gc()没有做任何事情.即使关闭R并再次重新开启也行不通.

它是"解决"使用ggsave("tst.pdf"),但错误仍然存​​在.我要向R团队报告.