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

编程入门 行业动态 更新时间:2024-10-27 17:24:19

R<a href=https://www.elefans.com/category/jswz/34/1770116.html style=语言ggplot2循环中保存图片失败问题"/>

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

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

        • 1.问题描述
        • 2.问题解决
          • 2.1 使用`ggsave函数`保存,成功
          • 2.2 使用`print函数`输出,成功

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时需要注意这一点,即可成功保存文件。

更多推荐

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

本文发布于:2024-03-14 13:01:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736533.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   图片

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!