考虑以下分面图,该图以 2x2 排列绘制 3 个分面。空的面位于右下角。
library(ggplot2)
ggplot(mtcars) +
aes(x = wt, y = mpg) +
geom_point() +
facet_wrap(~factor(cyl), ncol = 2)
我想生成一个在顶行有空面的图,例如像下面这样:
有什么方法可以做到这一点而不弄乱 grobs 或 gtable 吗?
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)
Created on 2019-06-04 by the reprex package (v0.3.0)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)