Как построить cowplot plot_grid с рваным вложенным списком - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть вложенный список ggplots, в котором каждый элемент списка будет объединен в cowplot :: plot_grid с 4 участками на сетку. Тем не менее, длина в моем списке графиков не делится на 4, поэтому мой список неровный. Таким образом, последний сюжет будет иметь только один сюжет. Мой список выглядит примерно так:

p.list <-
  list(
    list(ggplot(), ggplot(), ggplot(), ggplot()),
    list(ggplot(), ggplot(), ggplot(), ggplot()),
    list(ggplot())
  )

Я попытался создать нижеприведенную функцию, чтобы построить каждую отдельную plot_grid и сохранить их в списке

gg.grid <- function (myList, pos) {
  plot_grid(myList[[pos]][[1]],
            myList[[pos]][[2]],
            myList[[pos]][[3]],
            myList[[pos]][[4]],
            nrow = 2,
            ncol = 2)
}

Далее я использую purrr :: map чтобы сопоставить gg.grid с p.list примерно так

n <- 1:3
plot.grid.list <- map(n, ~ gg.grid(p.list, .x))

Конечно, это возвращает Error in myList[[pos]][[2]] : subscript out of bounds, потому что p.list[[3]] это длина = 1, а не 4.

Кто-нибудь знает, как добавить этот последний сюжет? Моя цель состояла бы в том, чтобы plot_grid с одним графиком оставался в сетке из 4 графиков, но имел только 1 из 4 графиков.

Я планировал попытаться добавить операторы if_else() в мои gg.grid() функция для добавления пустых ggplot() объектов к списку элементов с менее чем 4 элементами, но я подумал, что я спрошу здесь сначала.

...