ggplot2 facet_wrap 有两个嵌套变量:对每个变量使用不同的条带。position/switch?
ggplot2 facet_wrap with two nested variables: use different strip.position/switch for each variable?
我正在制作一个 ggplot
,其中我将 facet_wrap
与两个变量一起使用,例如第一个 var_1
具有值 A/B,第二个 var_2
具有 1/ 2,结果分为四个方面,A-1,A-2,B-1,B-2。我希望 var_1
A/B 标题显示在顶部,var_2
1/2 显示在侧面。
用 facet_wrap(~dim_1 +dim_2, ncol=1)
做这个,似乎参数 strip.position
将对两者应用相同的位置?另一种方法可能是使用 facet_grid()
(我想要它,同时具有水平和垂直方面)但不允许设置 rows/columns!?
的数量
下面的代码,实际输出,以及我想要的!
library(ggplot2)
df <- data.frame(dim_1 = rep(c("A", "B"), each=4),
dim_2 = rep(c("1", "2"), times=4),
x = rnorm(8), y = rnorm(8))
p <- ggplot(aes(x=x, y=y), data=df) +
geom_point()
p+
facet_wrap(~dim_1 +dim_2, ncol=1, strip.position = c("left"))
由 reprex package (v0.3.0)
于 2019-09-29 创建
我不知道在 ggplot 本身内完成该操作的方法,但另一种方法是使用 patchwork
:
合并两个图
library(patchwork)
myplot <- function(section = "A") {
ggplot(subset(df, df$dim_1 == section), aes(x,y)) +
geom_point() +
# coord_cartesian(xlim = c(min(df$x), max(df$x))) + # To get single x scale between all plots
facet_grid(dim_2~dim_1, switch = "y")
}
myplot("A") / myplot("B")
我正在制作一个 ggplot
,其中我将 facet_wrap
与两个变量一起使用,例如第一个 var_1
具有值 A/B,第二个 var_2
具有 1/ 2,结果分为四个方面,A-1,A-2,B-1,B-2。我希望 var_1
A/B 标题显示在顶部,var_2
1/2 显示在侧面。
用 facet_wrap(~dim_1 +dim_2, ncol=1)
做这个,似乎参数 strip.position
将对两者应用相同的位置?另一种方法可能是使用 facet_grid()
(我想要它,同时具有水平和垂直方面)但不允许设置 rows/columns!?
下面的代码,实际输出,以及我想要的!
library(ggplot2)
df <- data.frame(dim_1 = rep(c("A", "B"), each=4),
dim_2 = rep(c("1", "2"), times=4),
x = rnorm(8), y = rnorm(8))
p <- ggplot(aes(x=x, y=y), data=df) +
geom_point()
p+
facet_wrap(~dim_1 +dim_2, ncol=1, strip.position = c("left"))
由 reprex package (v0.3.0)
于 2019-09-29 创建我不知道在 ggplot 本身内完成该操作的方法,但另一种方法是使用 patchwork
:
library(patchwork)
myplot <- function(section = "A") {
ggplot(subset(df, df$dim_1 == section), aes(x,y)) +
geom_point() +
# coord_cartesian(xlim = c(min(df$x), max(df$x))) + # To get single x scale between all plots
facet_grid(dim_2~dim_1, switch = "y")
}
myplot("A") / myplot("B")