在ggplot2中将一个面板留空

use*_*102 6 r ggplot2

p <- ggplot(mtcars, aes(mpg, wt)) 
p + geom_point()+facet_grid(cyl ~ vs)+theme_bw()
Run Code Online (Sandbox Code Playgroud)

PIC

我想将面板(右下角的1对8)留空,没有显示数据点,但同时,我想保留这种安排.

所以facet_wrap(cyl ~ vs)无法解决我的问题.

也许更普遍的问题是,是否可以在ggplot2中安排每个面板?

Jaa*_*aap 12

你可以这样做,但不能facet_wrap(据我所知).创建单独的子图.有关详细的逐步方法,请参阅我的答案.

创建一个空白图并使用包gridExtra可以组合图:

library(gridExtra)
library(grid)

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

grid.arrange(plot1, plot2, blank, plot3, ncol=2)
Run Code Online (Sandbox Code Playgroud)

这种方法会给你最终情节(恕我直言)的外观带来很大的影响.


ags*_*udy 11

你改变了表格.

## 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)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • `g = ggplotGrob(p); ;g$grobs[[max(which(g$layout$name == "panel"))]] = nullGrob(); grid.draw(g)` (5认同)