使用for循环将多个ggplot保存为jpeg
Using a for loop to save multiple ggplot as jpeg
我想通过 for 循环将多个 ggplots 保存为 jpeg。但是当我尝试调整我为基本绘图命令编写的代码时,我没有得到任何输出(没有任何内容保存到我的工作目录中)。
例如,这很有效:
library(cowplot)
library(ggplot)
X<-c(1,2,3,4,5,6,7,8,9)
Y1<-c(2,3,4,4,3,2,4,5,6)
Y2<-c(3,4,5,3,2,1,1,2,3)
Y3<-c(4,5,6,7,8,9,8,7,6)
DF<-data.frame(X,Y1,Y2,Y3)
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
plot(DF[,1],DF[,i+1])
dev.off()
}
我最终将三个 jpeg 文件保存到我的工作目录中。
我不确定如何在此处为 i 正确索引 ggplot 调用,但即使这样也应该 return 同一图的 3 个实例:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
dev.off()
}
最后我是希望把多张图合并成一张jpeg,然后像这样保存多张jpeg:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
A<-ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
B<-ggplot(data=DF,aes(x=X,y=Y2))+geom_line()
C<-ggplot(data=DF,aes(x=X,y=Y3))+geom_line()
plot_grid(A,B,C)
dev.off()
}
因此该图还应该 return 同一图的 3 个实例,所有实例都具有不同的索引文件名。但是,我还是一无所获。
所以我的问题是为什么在这个 for 循环中通用绘图和 ggploting 之间存在差异。以及如何从上面的 ggplots 中保存多个 jpeg?
怎么样
library(gridExtra) # gridExtra::arrangeGrob
for(i in 1:3) {
jpeg(paste0(i, ".jpg"))
A <- ggplot(data = DF, aes(x = X, y = Y1)) + geom_line()
B <- ggplot(data = DF, aes(x = X, y = Y2)) + geom_line()
C <- ggplot(data = DF, aes(x = X, y = Y3)) + geom_line()
grid.arrange(arrangeGrob(A, B, C, ncol = 3))
dev.off()
}
注意:此解决方案不会生成 cowplot
的旁注("A"、"B"、"C") .
使用您的代码:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
A<-ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
B<-ggplot(data=DF,aes(x=X,y=Y2))+geom_line()
C<-ggplot(data=DF,aes(x=X,y=Y3))+geom_line()
k<-plot_grid(A,B,C)
ggsave(k, filname = "path/finalplot.jpeg")
}
查看 ?ggsave
以查看要指定的其他参数,例如 height
和 width
我想通过 for 循环将多个 ggplots 保存为 jpeg。但是当我尝试调整我为基本绘图命令编写的代码时,我没有得到任何输出(没有任何内容保存到我的工作目录中)。
例如,这很有效:
library(cowplot)
library(ggplot)
X<-c(1,2,3,4,5,6,7,8,9)
Y1<-c(2,3,4,4,3,2,4,5,6)
Y2<-c(3,4,5,3,2,1,1,2,3)
Y3<-c(4,5,6,7,8,9,8,7,6)
DF<-data.frame(X,Y1,Y2,Y3)
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
plot(DF[,1],DF[,i+1])
dev.off()
}
我最终将三个 jpeg 文件保存到我的工作目录中。
我不确定如何在此处为 i 正确索引 ggplot 调用,但即使这样也应该 return 同一图的 3 个实例:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
dev.off()
}
最后我是希望把多张图合并成一张jpeg,然后像这样保存多张jpeg:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
A<-ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
B<-ggplot(data=DF,aes(x=X,y=Y2))+geom_line()
C<-ggplot(data=DF,aes(x=X,y=Y3))+geom_line()
plot_grid(A,B,C)
dev.off()
}
因此该图还应该 return 同一图的 3 个实例,所有实例都具有不同的索引文件名。但是,我还是一无所获。
所以我的问题是为什么在这个 for 循环中通用绘图和 ggploting 之间存在差异。以及如何从上面的 ggplots 中保存多个 jpeg?
怎么样
library(gridExtra) # gridExtra::arrangeGrob
for(i in 1:3) {
jpeg(paste0(i, ".jpg"))
A <- ggplot(data = DF, aes(x = X, y = Y1)) + geom_line()
B <- ggplot(data = DF, aes(x = X, y = Y2)) + geom_line()
C <- ggplot(data = DF, aes(x = X, y = Y3)) + geom_line()
grid.arrange(arrangeGrob(A, B, C, ncol = 3))
dev.off()
}
注意:此解决方案不会生成 cowplot
的旁注("A"、"B"、"C") .
使用您的代码:
for(i in 1:3){
jpeg(paste(i,".jpeg",sep=""))
A<-ggplot(data=DF,aes(x=X,y=Y1))+geom_line()
B<-ggplot(data=DF,aes(x=X,y=Y2))+geom_line()
C<-ggplot(data=DF,aes(x=X,y=Y3))+geom_line()
k<-plot_grid(A,B,C)
ggsave(k, filname = "path/finalplot.jpeg")
}
查看 ?ggsave
以查看要指定的其他参数,例如 height
和 width