使用ggplo2的统计量和权重的叠加图

时间:2018-08-02 14:43:33

标签: r ggplot2 gridextra

我想创建一个显示特定统计信息和与图形的每个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))

其输出如下:

enter image description here

我的问题是,两个图形的轴标记保留空间都不相同。无论轴标签是什么,我都希望轴线完全对齐。

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

enter image description here

有没有办法做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:2)

您要使用库cowplot。 。 。

library(cowplot)

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

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