[我正在制作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创建
我不知道一种在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")