使用函数中的ggplot创建的绘图的多绘图错误

时间:2014-12-17 23:43:20

标签: r ggplot2

我的目标是编写一个用ggplot2生成图的函数,然后使用多值函数(http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_%28ggplot2%29/)将函数生成的图与其他图结合起来。 (我知道如何在ggplot2中使用facet,但这不是我想要做的)。我发现当我编写一个函数来生成绘图时,多重绘图不再有效。这是使用数据集mtcars的简化示例。

使用ggplot定期适用于多色时:

   p1<-ggplot((subset(mtcars, gear==4)), aes(x=mpg, y=hp)) +geom_point() +
            ggtitle("4 gears")
    p2<-ggplot((subset(mtcars, gear==3)), aes(x=mpg, y=hp)) +geom_point() +
            ggtitle("3 gears")
    multiplot(p1, p2, cols=2)

但是,如果使用函数生成相同的绘图,则多重绘图不起作用。这些图是单独显示的,而不是矩阵。

plot_fun <-function(data_frame, title) {
        print((ggplot(data_frame, aes(x=mpg, y=hp)) + 
                      geom_point() +
                      ggtitle(title)) ) }

p3 <-plot_fun((subset(mtcars, gear==4)), "4 gears")
p4 <-plot_fun((subset(mtcars, gear==3)), "3 gears")
multiplot(p3, p4, cols=2)

显然,我不了解我的功能输出和/或多色时所需的输入。我究竟做错了什么?我很感激帮助。

1 个答案:

答案 0 :(得分:3)

将我的评论转换为答案:multiplot(...)ggplot个参数作为参数,但您的plot_fun(...)不会返回ggplot个对象。摆脱对print(...)的调用。

plot_fun <-function(data_frame, title) {
  ggplot(data_frame, aes(x=mpg, y=hp)) + 
           geom_point() +
           ggtitle(title) }

p3 <-plot_fun((subset(mtcars, gear==4)), "4 gears")
p4 <-plot_fun((subset(mtcars, gear==3)), "3 gears")
multiplot(p3, p4, cols=2)