ggplot2 facet_wrap具有两个嵌套变量:对每个变量使用不同的strip.position / switch吗?

问题描述 投票:0回答:1

[我正在制作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()(我确实希望它具有水平和垂直小平面),但不允许设置行数/列数!?

下面的代码,带有实际输出以及我想要的东西!

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"))

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLmltZ3VyLmNvbS95MldiYmxaLnBuZyJ9” alt =“”>

reprex package(v0.3.0)在2019-09-29创建

r ggplot2 facet-wrap facet-grid
1个回答
0
投票

我不知道一种在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")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.