使用 ggplot2 的统计和权重的叠加图

Supperposed plot of a statistic and weight using ggplo2

我想创建一个图表来显示特定统计数据以及与我的图形的每个 bin 关联的权重。由于在 ggplot2 中不建议创建双 y 轴图,因此我听从了建议并将两个图堆叠在一起。以下是我所做的最小可重现示例:

library(data.table)
library(ggplot2)
library(gridExtra)

set.seed(1L)
data <- data.table(x=1:10, y=10000+1000*runif(10), weight=runif(10))

plot_stat <- ggplot(data) +
  geom_line(aes(x, y), stat="identity") +
  theme_classic() +
  theme(axis.text.x=element_blank(), axis.ticks.x=element_blank(), 
axis.title.x=element_blank(), axis.line.x=element_blank())

plot_weight <- ggplot(data) +
  theme_classic() +
  geom_bar(aes(x, weight), stat="identity")

grid.arrange(plot_stat, plot_weight, nrow = 2, heights = c(0.7, 0.3))

输出如下:

我的问题是,轴标签的保留 space 对于两个图表来说都不相同。无论轴标签是什么,我都希望轴线完全对齐。

这是我想要的结果(手动编辑):

有办法吗?

谢谢!

您想使用图书馆 cowplot。 . .

library(cowplot)

plot_grid(plot_stat, plot_weight, ncol = 1, align = "v")

需要注意的一件事是 cowplot 会更改您的默认 ggplot 主题,因此要将其改回,请执行以下操作:theme_set(theme_gray()).