make one panel blank in ggplot2

10,506

Solution 1

You change the table grobs.

## get the table grobs
g1 <- ggplot_gtable(ggplot_build(p))

library(gtable)
library(grid)
## here the main modification
## change one panel by a new rectangle.
pp <- gtable_add_grob(g1,rectGrob(gp=gpar(col=NA)),t=8,l=6,b=8,r=6)
grid.draw(pp)

enter image description here

Solution 2

You can do that, but not with facet_wrap (as far as I know). Create your seperate sub-plots. For a detailed step by step approach, see my answer here.

Create a blank plot & with the package gridExtra you can combine the plots:

library(gridExtra)
library(grid)

blank <- grid.rect(gp=gpar(col="white"))

grid.arrange(plot1, plot2, blank, plot3, ncol=2)

This approach will give you also a lot influence on the appearance of you final plot (IMHO).

Share:
10,506
user36102
Author by

user36102

Updated on July 27, 2022

Comments

  • user36102
    user36102 almost 2 years
    p <- ggplot(mtcars, aes(mpg, wt)) 
    p + geom_point()+facet_grid(cyl ~ vs)+theme_bw()
    

    Pic

    I would like to make the panel (1 vs 8 in the lower right hand corner) blank where no data points are shown, but at the same time, I would like to keep this arrangement.

    so facet_wrap(cyl ~ vs) could not solve my problem.

    maybe more general question is that is it possible to arrange each panel in ggplot2?