Я добавляю поддержку для подобных проблем в пакет cowplot.(Отказ от ответственности: я сопровождающий.) Для приведенных ниже примеров требуется R 3.5.0 и последняя версия разработки cowplot.Обратите внимание, что я переписал ваши коды графиков, чтобы кадр данных всегда передавался функции графика.Это необходимо, если мы хотим создать автономные объекты графика, которые мы затем можем отформатировать или упорядочить в сетке.Я также заменил qplot()
на ggplot()
, так как использование qplot()
теперь не рекомендуется.
library(ggplot2)
library(cowplot) # devtools::install_github("wilkelab/cowplot/")
library(lattice)
#1 base R (note formula format for base graphics)
p1 <- ~boxplot(mpg~cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon",
data = mtcars)
#2 lattice
p2 <- bwplot(~mpg | cyl,
xlab = "Number of Cylinders",
ylab = "Miles per Gallon",
data = mtcars)
#3 ggplot2
p3 <- ggplot(data = mtcars, aes(factor(cyl), mpg)) +
geom_boxplot() +
xlab("Number of Cylinders") +
ylab("Miles per Gallon")
# cowplot plot_grid function takes all of these
# might require some fiddling with margins to get things look right
plot_grid(p1, p2, p3, rel_heights = c(1, .6), labels = c("a", "b", "c"))
Функции cowplot также интегрированы сбиблиотека пэчворка для более сложных аранжировок сюжета (или вы можете вкладывать plot_grid()
звонки):
library(patchwork) # devtools::install_github("thomasp85/patchwork")
plot_grid(p1, p3) / ggdraw(p2)