将不同的ggplots并排放置,同时保持相同的构面包装

时间:2019-02-08 13:38:32

标签: r ggplot2

背景:我有一组ggplots(不同类型),它们本应彼此相邻显示,但是它们具有相同的方面。

这是一个最小的工作示例:

 p1 <- mtcars %>% ggplot(mapping = aes(x = wt, y = qsec)) + geom_point() +
  facet_wrap(~ cyl)

plot(p1)

p2 <- mtcars %>% ggplot(mapping = aes(x = disp, y = qsec)) + geom_smooth() +
  facet_wrap(~ cyl)

plot(p2)    

问题 我想拥有p1的第一个图(例如,上面)p2的第一个图,p1的第二个图在p2的第二个图上方,依此类推……我该怎么做?到目前为止,我的解决方案是分别拥有p1和p2,但这不是我想要的。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

尝试patchwork package

# install.packages("devtools")
# devtools::install_github("thomasp85/patchwork")
library(patchwork)
p1 / p2

enter image description here

答案 1 :(得分:2)

您还可以使用cran上的cowplot软件包。

library(tidyverse)
library(cowplot)

p1 <- mtcars %>% ggplot(mapping = aes(x = wt, y = qsec)) + geom_point() +
  facet_wrap(~ cyl)

p2 <- mtcars %>% ggplot(mapping = aes(x = disp, y = qsec)) + geom_smooth() +
  facet_wrap(~ cyl)

plot_grid(p1, p2, ncol = 1, align = "v")

enter image description here

我非常喜欢cowplot,但这确实改变了ggplot的默认主题。如果您想将其改回,则需要添加以下内容:theme_set(theme_gray())