在 facet_grid 中包裹一维 (ggplot2)
Wrap one dimension in facet_grid (ggplot2)
我正在使用 facet_grid 根据两个因素共同可视化数据。一个因素是太多级别无法放在一行中。因此,我想实现类似 facet_wrap 的东西,但有 2 个维度:
- facet_wrap可以和两个因素一起使用吗?
- facet_grid可以用来包裹一个因子吗?
输出应该类似于
A B C
. . . 1
. . . 2
D E
. . 1
. . 2
因子 1 为 5 个水平 A-E,包裹在 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 行。
非常感谢您的考虑!
ggplot2 中没有执行此操作的内置功能,但您可以使用 gridExtra[=19 中的 grid.arrange
来近似此行为=]:
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 中的详细摆弄)。
我正在使用 facet_grid 根据两个因素共同可视化数据。一个因素是太多级别无法放在一行中。因此,我想实现类似 facet_wrap 的东西,但有 2 个维度:
- facet_wrap可以和两个因素一起使用吗?
- facet_grid可以用来包裹一个因子吗?
输出应该类似于
A B C
. . . 1
. . . 2
D E
. . 1
. . 2
因子 1 为 5 个水平 A-E,包裹在 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 行。
非常感谢您的考虑!
ggplot2 中没有执行此操作的内置功能,但您可以使用 gridExtra[=19 中的 grid.arrange
来近似此行为=]:
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 中的详细摆弄)。