我的目标是编写一个用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)
显然,我不了解我的功能输出和/或多色时所需的输入。我究竟做错了什么?我很感激帮助。
答案 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)