gpt4 book ai didi

r - ggsave png 尺寸较大时出现错误

转载 作者:行者123 更新时间:2023-12-02 16:16:35 25 4
gpt4 key购买 nike

我正在保存一个分面 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

我之前用 ggsave 保存过这种大小的 png,有什么想法为什么它不起作用吗?

可重现的示例:

library(car)
qplot(education,data=Vocab,geom="density",colour=sex)+facet_wrap(~year)

最佳答案

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

在另一个问题中再次出现该问题后,我在新系统上重新运行了测试代码,看看错误是否消失了,事实确实如此。

<小时/>

编辑:底层代码可以工作的秘诀在于它仅使用 72 dpi 的分辨率,而不是我相信的 ggsave() 中的标准 300dpi。

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

但如果你无法承受的话,你的情节一定很疯狂。据我猜测,问题与显卡有关(源自 this message from prof. Ripley )。

如果分辨率有问题,您最好使用矢量化格式,例如 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
}

这对我来说运行得很好,直到我达到大约 9,然后我得到了你得到的错误。每次尝试运行该代码(从 i=1 重新开始)都会给出相同的错误。尝试使用 png()dev.off() 再次出现相同的错误。似乎内存的某些部分被填满并且没有被清空,有效地防止了保存另一个 png 文件。对我来说,gc()也没有做任何事情。即使关闭 R 并重新打开也不起作用。

使用ggsave("tst.pdf")“解决”了这个问题,但错误仍然存​​在。我会向 R 团队汇报。

关于r - ggsave png 尺寸较大时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4270349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com