ggplot2 + facet_:某些方面的反转轴?

ggplot2 + facet_: Reverse axes for some facets?

我想将三个子图放在一个图中,分面将是一种自然的方式。但是,这些子图之一 easier/more 可以很自然地阅读 x-axis (而我想不理会其他人)。有没有办法使用 facet_grid() 或 facet_wrap() 来完成此操作?

我考虑过的另一个选择是 grid.arrange(),我 运行 遇到的主要问题是让它根据绘图区域(在轴内)对齐子图), 而不是基于图像的边缘。 (我的轴标题和标签大小不一样,所以默认行为相当难看。)

编辑以添加 MWE,其中包含一些上下文数据。在这里,由于 beta 和 R-squared 子图的 "better" 较大,因此反转 p 子图的轴会更自然。 (在这种情况下,将对数转换添加到该比例可能会更好,但我的真正问题不需要那么花哨。)

df <- data.frame(z=c(rep("R-squared",15),rep("p",15),rep("beta",15)),
                 x=c(runif(15),exp(-runif(15,1,10)),rnorm(15,1,0.5)),
                 y=rep(letters[1:15],3))
plot <- ggplot(df) + geom_point(aes(x=x,y=y)) + facet_grid(.~z, scales="free_x", switch="x")

这是一个使用 patchwork

的解决方案
library(ggplot2)
library(dplyr)
df <- data.frame(z=c(rep("R-squared",15),rep("p",15),rep("beta",15)),
                 x=c(runif(15),exp(-runif(15,1,10)),rnorm(15,1,0.5)),
                 y=rep(letters[1:15],3))

p1 <- ggplot(filter(df, z == "beta"), aes(x, y)) +
  geom_point() 

p2 <- ggplot(filter(df, z == "p"), aes(x, y)) +
  geom_point() +
  scale_x_reverse() +
  theme(axis.title.y = element_blank(),
        axis.text.y  = element_blank(),
        axis.ticks.y = element_blank())

p3 <- ggplot(filter(df, z == "R-squared"), aes(x, y)) +
  geom_point() +
  theme(axis.title.y = element_blank(),
        axis.text.y  = element_blank(),
        axis.ticks.y = element_blank())

#devtools::install_github("thomasp85/patchwork")
library(patchwork)
p1 + p2 + p3