Save ggplot within a function

前端 未结 2 617
清酒与你
清酒与你 2020-12-03 02:22

I\'m trying to save a ggplot within a function using graphics devices. But I found the code produces empty graphs. Below is a very very simple example.

libr         


        
相关标签:
2条回答
  • 2020-12-03 03:15

    These plots have to be printed:

    ff <- function(){
      jpeg("a.jpg")
      p <- qplot(1:20, 1:20)
      print(p)
      dev.off()
    }
    ff()
    

    This is a very common mistake.

    0 讨论(0)
  • You should use ggsave instead of the jpeg(); print(p); dev.off() sequence. ggsave is a wrapper that does exactly what you intend to do with your function, except that it offers more options and versatility. You can specify the type of output explicitly, e.g. jpg or pdf, or it will guess from your filename extension.

    So your code might become something like:

    p <- qplot(1:20, 1:20)
    ggsave(filename="a.jpg", plot=p)
    

    See ?ggsave for more details


    The reason why the original behaviour in your code doesn't worked is indeed a frequently asked question (on stackoverlflow as well as the R FAQs on CRAN). You need to insert a print statement to print the plot. In the interactive console, the print is silently execututed in the background.

    0 讨论(0)
提交回复
热议问题