gpt4 book ai didi

r - 使用 facet_wrap 时空面的排序/放置

转载 作者:行者123 更新时间:2023-12-04 01:43:30 28 4
gpt4 key购买 nike

考虑以下分面图,它以 2x2 排列绘制了 3 个分面。空面位于右下角。

library(ggplot2)
ggplot(mtcars) +
aes(x = wt, y = mpg) +
geom_point() +
facet_wrap(~factor(cyl), ncol = 2)

2x2 plot with 3 facets. Empty facet is in the lower-right corner.

我想改为生成一个在顶行有空面的图,例如如下所示:

2x2 plot with 3 facets. Empty facet is in the upper-right corner.

有什么方法可以做到这一点而不会弄乱 grobs 或 gtable 吗?

最佳答案

facet_wrap 有一个选项 as.table。来自文档:

If TRUE, the default, the facets are laid out like a table with highest values at the bottom-right. If FALSE, the facets are laid out like a plot with the highest value at the top-right.

如果你设置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 创建于 2019-06-04 (v0.3.0)

关于r - 使用 facet_wrap 时空面的排序/放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56447366/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com