-3

我正在使用 facet_grid 根据两个因素共同可视化数据。一个因素是太多级别无法容纳在一行中。因此,我想实现类似 facet_wrap 的东西,但有 2 个维度:

  1. facet_wrap 可以与两个因素一起使用吗?
  2. facet_grid 可以用来覆盖一个因素吗?

输出应该看起来像

A    B    C
.    .    .  1
.    .    .  2

D    E       
.    .       1
.    .       2

因子 1 为 5 个级别 AE,包裹在 2 行上,因子 2 为两个级别 1-2,在每一行上重复。

这是一个实际的例子:

library(ggplot2)
df <- data.frame(y=rnorm(1000), f1=rep(1:10, 100), f2=rep(1:2, each=500))
ggplot(df, aes(x=x)) + geom_histogram() + facet_grid(f2~f1)

我想将图像一分为二,五个第一层在上面,最后五个在下面,同时保持每行的 1 和 2 行。

非常感谢您的考虑!

4

1 回答 1

0

ggplot2中没有执行此操作的内置功能,但您可以使用grid.arrangefrom gridExtra来近似此行为:

library(gridExtra)
p1 <- ggplot(df[df$f1 %in% 1:5,], aes(x=y)) + 
    geom_histogram() + 
    facet_grid(f2~f1)
p2 <- ggplot(df[df$f1 %in% 6:10,], aes(x=y)) + 
    geom_histogram() + 
    facet_grid(f2~f1)

grid.arrange(p1,p2,nrow = 2)

两个独立地块之间的对齐通常不会完美。它可以更精确地对齐,但并非不费吹灰之力(在grid中详细摆弄)。

于 2015-08-17T14:07:44.023 回答