首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >较大尺寸的ggsave错误

较大尺寸的ggsave错误
EN

Stack Overflow用户
提问于 2010-11-24 18:44:13
回答 3查看 23.1K关注 0票数 13

我正在保存一个分面的ggplot2图,它可以很好地保存在较小的大小,但当我想要增加它时失败。

代码语言:javascript
复制
> 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保存过这么大的pngs,知道它为什么不起作用吗?

可复制的例子:

代码语言:javascript
复制
library(car)
qplot(education,data=Vocab,geom="density",colour=sex)+facet_wrap(~year)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-11-24 22:22:59

注意:在Windows 7 64位上使用R2.12.1,这个问题就消失了。如果遇到此问题,请首先尝试更新您的R版本.

在另一个问题再次出现之后,我将我的测试代码重新运行在我的新系统上,以查看bug是否已经消失,而且它确实存在。

编辑:底层代码能够工作的诀窍是,它只使用72 dpi的分辨率,而不像我认为的ggsave()中的标准使用300 dpi。

这样ggsave("tst.png",height=9,width=12,dpi=72)就能做到这一点。

但如果它不能承受的话,你一定会有一个疯狂的阴谋。据我所知,这个问题与图形卡有关(从这条来自教授的信息。里普利派生)。

如果分辨率是一个问题,你可以转到矢量化格式,如eps或pdf。

编辑2:

很明显,某个地方有个bug可能是某种内存泄漏?给出以下代码:

代码语言:javascript
复制
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")“解决”的,但是这个bug仍然存在。我会向R组汇报。

票数 16
EN

Stack Overflow用户

发布于 2020-01-24 17:28:10

我在Windows中使用了png、jpeg和pdf扩展(32位)。经过一番研究,我发现原因是我试图将它们直接保存在硬盘中:

代码语言:javascript
复制
ggsave(paste("C:/how",eval(parse(text = "i")),eval(parse(text = "j")),".pdf",sep="_"),height=6.75,width=9)

RStudio似乎没有管理员权限直接写入C:/。我已将文件夹更改为桌面,现在一切正常。

票数 0
EN

Stack Overflow用户

发布于 2021-08-30 11:20:32

我面临着这个问题,我只是打字

代码语言:javascript
复制
ggsave(plot_name, filename = "output_directory/xxxx.png")

它将文件保存在所需的目录中,而不提及路径或设备。

我在使用windows 10。

最新情况:

我尝试了两个示例来使用ggsave保存绘图,通过使用我的解决方案(我直接包含了绘图和文件名),它运行得很好。或者我添加路径,文件名,设备的地方。

看起来问题与Rstudio上的项目目录的路径有关,所以ggsave会出现错误。

代码语言:javascript
复制
library(ggplot2)

plot <- ggplot(data = iris, aes(x = Petal.Length, y = Petal.Width, color = Species)) + geom_point()


ggsave(plot, path = "01_Output/long path saving file for ggsave example/", filename = "iris3.png", device = "png")

ggsave(plot, filename = "01_Output/long path saving file for ggsave example/iris2.png")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4270349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档