将x轴与grid.arrange

时间:2019-02-12 12:33:36

标签: r ggplot2

我正在尝试绘制两个对齐的图形,但是其中一个具有标签,而其中一个没有标签。

示例:

library(dplyr)
library(ggplot2)

df <-
  seq(as.Date("2019-01-01"), as.Date("2019-01-31"), by = 1) %>%
  as_tibble() %>%
  rename(day = value) %>%
  mutate(
    x = seq(1, 31, by = 1),
    y = x * 2 - 20
  )

p1 <-
  df %>%
  gather(key, value, c(x, y)) %>%
  ggplot(aes(x = day, y = value, color = key)) +
  geom_line(size = 1)

p2 <-
  df %>%
  ggplot(aes(x = day, y = y / x)) +
  geom_line(size = 1)

grid.arrange(
  p1, p2
)

结果:

enter image description here

是否可以不使用facet_wrap 对齐轴? (我想为每个图添加特定的标签格式化程序,因为它们使用不同的单位,而facet_wrap不允许我这样做)

1 个答案:

答案 0 :(得分:3)

您可以使用cowplot软件包将它们作为具有相同图例的不同地块进行管理:

library(cowplot)
legend <- get_legend(p1)   # get the legend of the first one plot

# here the plots in a grid
prow <- plot_grid( p1 + theme(legend.position="none"),
           # here you add the percentage
           p2 + theme(legend.position="none")+ scale_y_continuous(labels = scales::percent),
           align = 'v',
           labels = c("A", "B"),
           hjust = -1,
           nrow = 2)

# here you add the legend
p <- plot_grid( prow, legend, rel_widths = c(3, .3))
p

enter image description here