Ну, я думаю, что это больше не будет «фацетным сюжетом». Поэтому я не думаю, что есть какая-то конкретная функция c.
Но для этого вы можете использовать пакет fantasti c patchwork
, в частности, вариант макета в wrap_plots
.
. Как описывает автор основного пакета Томас в виньетке, Опция ниже, использующая area()
, может быть немного многословной, но она даст вам полную программную c опцию для позиционирования всех ваших графиков.
library(tidyverse)
library(patchwork)
mydf <- data.frame(
group = LETTERS[1:5],
x = c(1, 2, 3, 1.5, 2.5),
y = c(2, 1, 2, 3, 3),
stringsAsFactors = F
) %>%
group_by(group) %>%
expand_grid(time = 1:20) %>%
ungroup() %>%
mutate(dv = rnorm(n())) %>%
arrange(group, time)
## plot in grid
mylist <-
mydf %>%
split(., .$group)
p_list <-
map(1:length(mylist), function(i){
ggplot(mylist[[i]]) +
geom_line(aes(x = time, y = dv)) +
ggtitle(names(mylist)[i])
}
)
layout <- c(
area(t = 1, l = 1, b = 2, r = 2),
area(t = 2, l = 3, b = 3, r = 4),
area(t = 3, l = 5, b = 4, r = 6),
area(t = 4, l = 3, b = 5, r = 4),
area(t = 5, l = 1, b = 6, r = 2)
)
wrap_plots(p_list, design = layout)
#> result not shown, it's the same as below
Для более программного подхода c, один вариант - создать требуемый объект "patch_area" вручную.
t = 1:5
b = t+1
l = c(1,3,5,3,1)
r = l+1
list_area <- list(t = t, b = b, l = l, r = r)
class(list_area) <- "patch_area"
wrap_plots(p_list, design = list_area)
Создано в 2020-04-22 пакетом Представить (v0.3.0)