сетка -компоновка нескольких ggplots, созданных с помощью функции lapply над facet_grid()

#r #ggplot2

#r #ggplot2

Вопрос:

У меня есть функция, которая автоматически генерирует длинный список граненых ggplots с использованием facet_grid . Теперь я хотел бы дополнительно «разбить» эти фасетные графики на блоки размером 3×5, эквивалентные страницам размером с буквы, чтобы они могли служить физическим справочным материалом. Возможно ли сгенерировать такие макеты в ggplot?

[Я надеюсь, что нет необходимости предоставлять повторное выражение для этой проблемы. Я считаю, что вопрос довольно ясен, и я не ищу прямого решения — было бы полезно просто указать правильное направление или избежать бессмысленной кроличьей норы.]

Комментарии:

1. Проверьте пакет patchwork — он очень удобен для пользователя и должен иметь именно ту функциональность, которая вам нужна.

2. Потрясающе! Спасибо. Еще предстоит изучить, но выглядит очень полезным

Ответ №1:

Еще раз спасибо @A.S.K. Пакет patchwork — это именно то, что мне было нужно.

 require(ggplot2)
require(patchwork)

# using lapply with ggplot

df <- data.frame(x=c("a", "b", "c"), col1=c(1, 2, 3), col2=c(3, 2, 1), col3=c(4, 2, 3))
cols <- colnames(df[2:4])
myplots <- vector('list', 3)

plot_function <- function(y_column, data) { 
     ggplot(data, aes_string(x="x", y=y_column, fill = "x"))  
     geom_col()   
     labs(title=paste("lapply:", y_column))
}


myplots <- lapply(cols, plot_function, df)

# using patchwork for layout

patch1 <- myplots[[1]]   myplots[[2]] / myplots[[3]]   plot_layout(guides = 'collect')
patch2 <- myplots[[1]] / ( myplots[[3]] | myplots[[2]] )   theme_grey()   plot_layout(guides = 'collect')
patch1 / patch2 
 

быстрая попытка с пэчворком

Теперь мне просто нужно разобраться, как программно сгенерировать макет из списка и понять параметры макета, чтобы графики красиво заполняли страницу размером с букву. Но это было намного проще, чем я надеялся.