Search code examples
rplotggplot2par

plots generated by 'plot' and 'ggplot' side-by-side


Is there a way to put the plot generated by plot function and the plot by ggplot function in R in one page side-by-side?

It is easy to put plots created by the same function into one page using par or multiplot function, but I can't figure out the above question.


Solution

  • You can do this using the gridBase package and viewPorts.

    library(grid)
    library(gridBase)
    library(ggplot2)
    
    # start new page
    plot.new() 
    
    # setup layout
    gl <- grid.layout(nrow=1, ncol=2)
    # grid.show.layout(gl)
    
    # setup viewports
    vp.1 <- viewport(layout.pos.col=1, layout.pos.row=1) 
    vp.2 <- viewport(layout.pos.col=2, layout.pos.row=1) 
    # init layout
    pushViewport(viewport(layout=gl))
    # access the first position
    pushViewport(vp.1)
    
    # start new base graphics in first viewport
    par(new=TRUE, fig=gridFIG())
    
    plot(x = 1:10, y = 10:1)
    
    # done with the first viewport
    popViewport()
    
    # move to the next viewport
    pushViewport(vp.2)
    
    ggplotted <- qplot(x=1:10,y=10:1, 'point')
    # print our ggplot graphics here
    print(ggplotted, newpage = FALSE)
    
    # done with this viewport
    popViewport(1)
    

    enter image description here

    This example is a modified version of this blog post by Dylan Beaudette