首页 文章

使用for循环将多个ggplot保存为jpeg

提问于
浏览
1

我想通过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文件保存到我的工作目录中 .

我不确定如何正确索引ggplot调用这里为i,但即使这应该返回相同的情节的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()
}

因此,此绘图还应返回同一绘图的3个实例,所有实例都具有不同的索引文件名 . 但同样,我一无所获 .

所以我的问题是为什么在这个for循环中通用绘图和ggploting之间存在差异 . 如何从上面的ggplots中保存多个jpeg?

2 回答

  • 0

    怎么样

    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()
    
    }
    

    Note: 此解决方案不会生成 cowplot ("A","B","C")的边注释 .

  • 1

    使用你的代码:

    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 来查看其他参数来指定如 heightwidth

相关问题