赞
踩
在使用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()}
结果没问题:
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=""))}
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时需要注意这一点,即可成功保存文件。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。