语言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循环中保存图片失败问题
发布评论