首页 > 解决方案 > 排列多个绘图并保持 x 轴标签与轴齐平

问题描述

我正在使用patchwork包安排多个情节。其中一个图的文本垂直排列,这将 x 轴标签向下推(应该如此),但是当我与第二个图结合时,两个图中的 x 轴标签都向下移动。我想将第二个图的 x 轴标签保持在其原始位置。用一个例子更容易解释:

library(ggplot2)
library(patchwork)

# Toy data
mtcars2 <- mtcars[1:5, ]
mtcars2$mod <- row.names(mtcars2)


# make 2 plots
p1 <- ggplot(mtcars2, aes(mod, mpg)) +
  geom_col() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0, hjust = 1))

p2 <- ggplot(mtcars2, aes(hp, disp)) +
  geom_point()

# arrange plots next to each other
p1 + p2

在此处输入图像描述

但我想要:

在此处输入图像描述

这可能吗?我没有被束缚patchwork,我尝试过gridExtra::grid.arrange(),但改变了情节的大小。

标签: rggplot2patchwork

解决方案


使用library(cowplot), x 轴p2会下降,不像你的例子,但我希望它对你有帮助。如果您需要让 x 轴的位置在同一位置,请告诉我。

@phalteman 的补充说明

通过添加, align = "h", axis = "b"plot_grid它真的成为你想要的!

library(cowplot)
mtcars2 <- mtcars[1:5, ]
mtcars2$mod <- row.names(mtcars2)


# make 2 plots
p1 <- ggplot(mtcars2, aes(mod, mpg)) +
  geom_col() +
  theme(axis.text.x = element_text(angle = 90, vjust = 0, hjust = 1))

p2 <- ggplot(mtcars2, aes(hp, disp)) +
  geom_point()

# arrange plots next to each other

plot_grid(p1, p2, align = "h", axis = "b") #Thanks to @phalteman 

牛图


推荐阅读