我有这段代码:
plotfn= function(u) {
flt = filter(d, utensil ==u)
ggplot(flt,aes(x=p)) + geom_histogram(binwidth = 0.5, position= position_dodge(0.5), color="black",fill="cadetblue4")+ ggtitle("Histogram of P")+labs( x="P", y="Number of Observations")
}
lapply(unique(d$utensil),plotfn)
我尝试使用par(mfrow= c(3,3))
在1个屏幕上获取所有9个图,但它不起作用。我必须使用ggplot。
答案 0 :(得分:5)
查看gridExtra
包,它与ggplot2
很好地集成,并允许您将多个绘图放在一个页面上:https://cran.r-project.org/web/packages/gridExtra/vignettes/arrangeGrob.html
要使用它,请将ggplot
次调用的输出存储到变量中,然后将该变量传递给grid.arrange
:
myGrobs <- lapply(unique(d$utensil),plotfn)
gridExtra::grid.arrange( grobs = myGrobs, nrow = 3 )
答案 1 :(得分:2)
这应该让你开始:
install.packages("gridExtra")
library(gridExtra)
grid.arrange(plot1, plot2, ..., ncol=3, nrow = 3)