R语言ggplot2循环中保存图片失败问题

1.问题描述

在使用R语言ggplot2绘图时,需要保存多个图片结果,所以使用循环。
结果,ggplot2放在循环中时,如果使用创建图片(pdf("filename.pdf") 或 png("filename.png") etc...)和关闭图片(dev.off())的命令,需要注意。

例如,使用下面的代码,想要循环产生3个pdf图片文件(循环外,单个图片操作没问题),循环中这样使用不能保存图片代码不报错

require(ggplot2)
for(i in 1:3){
  pdf(paste( i, ".pdf", sep=""))
  ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length)) +
    geom_point(aes(color=Species), size=3) +
    scale_color_brewer(palette = "Set2")
  dev.off()}

实际上生成的3个pdf文件没有图片内容,实际上并没有将缓存中图片释放保存到PDF中。
在这里插入图片描述

在这里插入图片描述当然,如果不使用ggplot2也没这问题,也能正常保存
例如:

for(i in 1:3){
  pdf(paste( i, ".pdf", sep=""))
  plot(1:10)
  dev.off()}

结果没问题:
在这里插入图片描述
在这里插入图片描述

2.问题解决
2.1 使用ggsave函数保存,成功
for(i in 1:3){
  ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length)) +
    geom_point(aes(color=Species), size=3) +
    scale_color_brewer(palette = "Set2")
  ggsave(paste( i, ".pdf", sep=""))}

在这里插入图片描述
在这里插入图片描述

2.2 使用print函数输出,成功
require(ggplot2)
for(i in 1:3){
  pdf(paste( i, ".pdf", sep=""))
  p1 <- ggplot(iris, aes(x=Sepal.Width, y=Sepal.Length)) +
    geom_point(aes(color=Species), size=3) +
    scale_color_brewer(palette = "Set2")
  print(p1)   ## 添加p1 print操作
  dev.off()}

在这里插入图片描述
在这里插入图片描述

以上,使用ggplot2循环保存pdf时需要注意这一点,即可成功保存文件。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值