Как получить ggplot grobs после использования функции, которая использует lapply? - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь расположить гробы, сгенерированные из функции, используя lapply, но в gList пытается передать больше данных, чем может быть использовано функцией grid, вот некоторый воспроизводимый код:

library(dplyr)
library(gridExtra)

split_ex <- mtcars %>% split(cyl)
list_ex <- unique(mtcars$cyl)

test_plot <- function(dat){
subtest_plot <- function(type) {
  ggplot(data=dat %>% filter(cyl==type)) +
    geom_col(aes(y=mpg,x=disp)) +
    labs(title=type)
}
lapply(list_ex, function(type) subtest_plot(type))
}

grid.arrange(test_plot(mtcars),ncols=2)

1 Ответ

0 голосов
/ 18 октября 2018
library(dplyr)
library(grid)
library(ggplot2)
library(gridExtra)

split_ex <- mtcars %>% split(cyl)
list_ex <- unique(mtcars$cyl)

test_plot <- function(dat){
  subtest_plot <- function(type) {
    ggplot(data=dat %>% filter(cyl==type)) +
      geom_col(aes(y=mpg,x=disp)) +
      labs(title=type)
  }
  lapply(list_ex, function(type) subtest_plot(type))
}

grid.newpage()
grid.draw(
  arrangeGrob(grobs=test_plot(mtcars), ncol=2)
)

enter image description here

...