请考虑以下多面图,该图以2x2排列绘制3个小面。空面位于右下角。
library(ggplot2)
ggplot(mtcars) +
aes(x = wt, y = mpg) +
geom_point() +
facet_wrap(~factor(cyl), ncol = 2)
我想改为制作一个图,该图的最上面一行为空白,例如如下所示:
有什么方法可以做到而又不会弄乱grob或gtable?
答案 0 :(得分:2)
facet_wrap
有一个选项as.table
。从文档中:
如果为TRUE(默认值),则这些构面的布局类似于表格,其右下角具有最高的值。如果为FALSE,则刻面的布局就像在右上角具有最大值的图一样。
如果您设置as.table = F
,则会在右上角出现一个空格,但是面板现在处于尴尬的状态;它们会像
8 (blank)
4 6
要获得所需的订单,请进行一些预处理。
如果反转因子水平,则会得到一个布局
4 (blank)
8 6
顺序分为左下,右下,左上,右上。
根据您希望它们如何排列,您可能必须手动订购构面级别,除非在整个项目中可以将其他逻辑放在一起。我已经在这里用forcats::relevel
手动完成了。
library(dplyr)
library(ggplot2)
mtcars %>%
mutate(cyl = as.factor(cyl) %>%
forcats::fct_relevel("6", "8", "4")) %>%
ggplot(aes(x = wt, y = mpg)) +
geom_point() +
facet_wrap(vars(cyl), ncol = 2, as.table = F)
由reprex package(v0.3.0)于2019-06-04创建