require(ggplot2)
## Loading required package: ggplot2
require(Cairo)
## Loading required package: Cairo
require(grid)
## Loading required package: grid
#创建新的画图页面
grid.newpage()
pushViewport(viewport(layout = grid.layout(2,2)))
a = ggplot(iris,aes(x = Species,y = Sepal.Length,colour = Species))+geom_point()
b = qplot(Sepal.Length,Petal.Length,data=iris,geom="point",colour = Species)+theme(legend.position="none")
c = qplot(Species,Sepal.Width,data=iris,geom="boxplot",fill = Species)

vplayout = function(x,y)viewport(layout.pos.row = x,layout.pos.col = y)
print(a,vp = vplayout(1,1:2))
print(b,vp = vplayout(2,1))
print(c,vp = vplayout(2,2))

ggsave("test_layout2.png",width = 8,height = 6)