I have managed to make a 2x2 plot using grid.arrange:
library(gridExtra) grid.arrange(p1,p3,p2,p4, ncol=2, nrow=2, top = \"Daily QC: Blue\")
main=textGrob("Daily QC: Blue",gp=gpar(fontsize=20,font=3))
Edit with v>=2.0.0 of gridExtra, main has become top (for consistency with bottom, left and right).
main
top
bottom
left
right